首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

DATEDIFF 计算天数时跨闰年时会出异常

2013-12-04 
DATEDIFF 计算天数时跨闰年时会出错误本帖最后由 wizard_zq 于 2013-12-02 11:45:02 编辑今天无意中测试了

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!

我想问下如果碰到这种要统计的时间之前存在闰年,怎么处理这个天数间隔问题?我想这种情况应该会经常出现吧?难道要写一堆判断的语句来判断,再来计算?有没有其他的简便点的方法?

  SQL函数
[解决办法]
明年是闰年吗?
[解决办法]
2014年不是闰年。

2016年是闰年:

select DATEDIFF(DAY,'2016-01-01','2017-01-01')
/*
366
*/

热点排行