【发布时间】:2016-05-05 04:39:27
【问题描述】:
好的,这是一个看似显而易见的问题,但我只是没有完全遵循......
我在一堆日期上运行了以下代码:
SELECT
DATEDIFF(DAY, Start, [End]) AS DIFD,
DATEDIFF(WEEK, Start, [End]) AS DIFW,
DATEDIFF(Month, Start, [End]) AS DIFM,
DATEDIFF(Year, Start, [End]) AS DIFY
FROM
Datetest
这是我看到的结果:
Start End Description DIFD DIFW DIFM DIFY
2010-03-25 2011-03-25 Normal Year 365 52 12 1
2011-03-25 2012-03-25 Leap Year 366 53 12 1
2010-03-24 2011-03-25 Add 1 day 366 52 12 1
2010-03-24 2011-03-26 Add 2 day 367 52 12 1
2010-03-24 2011-03-27 3 days 368 53 12 1
2010-03-24 2011-03-28 4 days 369 53 12 1
2010-03-24 2011-03-29 5 days 370 53 12 1
2010-03-24 2011-03-30 6 days 371 53 12 1
2010-03-24 2011-03-31 7 days 372 53 12 1
所以这里唯一有意义的是日期的差异。
它是如何在数周内未能识别出 366 天的闰年并将其归类为 53 周,但随后又将第三条记录归类为只有 52 周,而天数相同?
同样,我不了解月份和年份。我想从第 3 条记录开始,它会四舍五入到 13 个月或 2 年?
【问题讨论】:
-
您是否尝试过手动计算实际日期?
-
对于您预期用途中的这些示例来说,四舍五入可能看起来很自然,但您是否真的希望,例如,
2016-03-24和2016-03-25之间的年差也按照相同的逻辑为 1 年?
标签: sql sql-server tsql datediff