DATEDIFF 计算天数时跨闰年时会出错误
本帖最后由 wizard_zq 于 2013-12-02 11:45:02 编辑
今天无意中测试了下DATEDIFF这个函数
因为明年就是闰年嘛,所以写了个简单的测试语句,发现了这个问题
DECLARE @date1 datetime
DECLARE @date2 datetime
SET @date1=GETDATE()
SET @date2=DATEADD(yyyy,1,@date1)
SELECT GETDATE()
SELECT DATEADD(YYYY,1,@date1) AS A
select DATEDIFF(DD,@date1,@date2)
最后一条语句的查询结果竟然是365!而不是366!
我想问下如果碰到这种要统计的时间之前存在闰年,怎么处理这个天数间隔问题?我想这种情况应该会经常出现吧?难道要写一堆判断的语句来判断,再来计算?有没有其他的简便点的方法?
------解决方案--------------------明年是闰年吗?
------解决方案--------------------2014年不是闰年。
2016年是闰年:
select DATEDIFF(DAY,'2016-01-01','2017-01-01')
/*
366
*/