我正在运行一个简单的DATEDIFF查询,但它似乎没有正确计算日期或我做错了。
如果我跑
PRINT DATEDIFF(Day, 2010-01-20, 2010-01-01)
RETURN 19
哪个是对的。如果我把第一个月的月份更改为2月(02),我会发现一些奇怪的事情。
PRINT DATEDIFF(Day, 2010-02-20, 2010-01-01)
RETURN 20
现在不应该是48还是什么?
如果我想要在这些日期之间的天数,那么任何人都可以看到我做错了或者这不是正确使用的功能吗?
我尝试过另一个约会:
PRINT (2010-02-20) - (2010-01-01)
RETURN -20
任何帮助都非常感激。
由于 学家
答案 0 :(得分:4)
你缺少引号
PRINT DATEDIFF(Day, '2010-01-01', '2010-02-20')
你得到20因为
2010 - 1 - 1 = 2008
2010 - 2 - 20 = 1988
2008 - 1988 = 20
答案 1 :(得分:1)
如果你这样运行:
SELECT 2010-02-20, 2010-01-01
你会看到
1988 2008
是您在此处放置的结果或整数操作。
将日期常量括在单引号中:
SELECT DATEDIFF(Day, '2010-02-20', '2010-01-01')
--
-50
答案 2 :(得分:1)
PRINT DATEDIFF(Day, '2010-01-10', '2010-02-20')
第二次约会 - 第一次约会。别忘了''。
答案 3 :(得分:1)
如果用撇号包围日期,它会起作用 -
SELECT DATEDIFF(day, '2010-02-20', '2010-01-10')
-41