好吧,这里有个看似显而易见的问题,但我只是没有完全跟进.
我在一堆日期上运行了以下代码:
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周,当有相同的天数时?
同样,我也不明白月份和年份。我想从第三次记录开始,可能会有13个月或2年的时间?
发布于 2016-01-28 00:28:35
返回指定日期部分边界在指定开始日期和结束日期之间的计数(有符号整数)。
这里的关键词是“边界”。
一周的边界取决于服务器设置(周可以从星期日或星期一开始,也可以从其他任何一天开始)。请参阅SET DATEFIRST
月的边界是月的第一天,年的边界是一月的第一天。
例如,两者
DATEDIFF(Year, '2010-03-24', '2011-03-24')
DATEDIFF(Year, '2010-01-01', '2011-12-31')将返回1,因为在以上两个日期范围之间只有一个1月1日。
发布于 2016-01-28 00:29:14
DATEDIFF函数不计算精确的数字,然后再循环。它意味着跨越边界。例如,DATEDIFF(YEAR, '2016-01-01', '2016-12-31')实际上是0。
https://stackoverflow.com/questions/35050737
复制相似问题