【发布时间】:2015-06-16 20:06:59
【问题描述】:
DATEDIFF(MONTH, '1/1/2014', '12/31/2014') + 1
这会给我 12 个。
如果我这样做会怎样:
DATEDIFF(MONTH, '1/1/2014', '12/30/2014') + 1
它应该给我 11 点的东西。如何获取这两个日期之间的确切月数?这需要适用于任何日期组合(一年中的任何月份)。
【问题讨论】:
-
确切地说,您是指整月吗? 2014 年 1 月 31 日 -> 2014 年 1 月 2 日之间有几个月?和 2014 年 1 月 1 日 -> 2014 年 2 月 28 日?
-
满或不满取决于输入参数。考虑到数字可能是小数,我需要两个日期之间的确切月数。在我的示例中,差异是 11 POINT 几个月,而不是 12 个整月。
-
您将结果加一 (11) 11+1 = 12。
SELECT DATEDIFF(MONTH, '1/1/2014', '12/31/2014')和SELECT DATEDIFF(MONTH, '1/1/2014', '12/30/2014')都返回 11 -
DATEDIFF 用于返回跨越的日期边界数。这是在手册中。此外,“月”是一个任意概念,适用于间隔中的特定天数。例如,整个二月和整个三月通常只有 59 天,但整个七月和八月都是 62 天。
标签: sql sql-server monthcalendar