【问题标题】:SQL Server - Count difference months between two dates [closed]SQL Server - 计算两个日期之间的差异月份[关闭]
【发布时间】:2016-02-24 22:21:27
【问题描述】:

有没有办法计算两个日期之间的月数?

我有这个

SELECT DATEDIFF(mm, '2015-11-01', '2015-12-01')

但是这给我带来了 1,实际上我希望它是 2,我应该将结果与 1 相加,还是有另一个专门用于此的函数?

让我解释一下我需要什么,我有几个月和几年,我不在乎这一天,因为总是 01,所以每个日期都用 yyyy/mm/01 表示,在我的例子中,我确定了一个值,这个值出现在“2015-11-01”和“2015-12-01”上,这意味着我在两个月内拥有它,现在我需要计算月数,所以使用 datediff 返回 1 这在我的情况下是不正确的.

【问题讨论】:

  • 您希望它为 2 背后的逻辑是什么?如果他们在同一个月,您希望“差异”为 1 吗?如果他们在同一天?如果是这样,那么是的,总是将 1 加到 DATEDIFF,你会得到你想要的结果。
  • 如果您的日期总是从第一天开始,只需在结果中添加 +1 或 CEIL 超过 31 天的天数即可快速破解
  • @TabAlleman 我认为在该日期范围内有 2 个不同的月份。所以,是的,应该是DATEDIFF + 1
  • 你为什么认为这是 2?您可能需要更准确地定义您认为的一个月。

标签: sql-server


【解决方案1】:

如果我正确理解了您的问题,这将是我的建议:

只需将 1 添加到您的 DATEDIFF 输出即可。

SELECT DATEDIFF(mm, '2015-11-01', '2015-12-01') +1

【讨论】:

    【解决方案2】:

    你可以这样做

    SELECT 12 * (YEAR(Date1) 
                  - YEAR(Date2)) 
           + (MONTH(Date1) 
               - MONTH(Date2)) AS months 
    FROM table
    

    SELECT TIMESTAMPDIFF(MONTH, '2015-11-01', '2015-12-01')
    

    【讨论】:

    • 这是一个 MySQL 函数。
    猜你喜欢
    • 2012-09-20
    • 1970-01-01
    • 2019-12-27
    • 1970-01-01
    • 2010-12-04
    • 2022-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多