SQL DATEDIFF不工作?

时间:2010-03-25 16:57:22

标签: sql tsql datediff

我正在运行一个简单的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

任何帮助都非常感激。

由于 学家

4 个答案:

答案 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