6

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

非常感谢任何帮助。

谢谢J。

4

4 回答 4

4

你缺少引号

PRINT DATEDIFF(Day, '2010-01-01', '2010-02-20')

你得到 20 因为

2010 - 1 - 1 = 2008
2010 - 2 - 20 = 1988

2008 - 1988 = 20
于 2010-03-25T16:59:59.010 回答
1

如果你这样运行它:

SELECT  2010-02-20, 2010-01-01

你会看见

1988  2008

这是您放在这里的结果或整数运算。

将日期常量括在单引号中:

SELECT  DATEDIFF(Day, '2010-02-20', '2010-01-01')

--
-50
于 2010-03-25T17:00:57.057 回答
1
PRINT DATEDIFF(Day, '2010-01-10', '2010-02-20') 

这需要第二次约会 - 第一次约会。不要忘记''。

于 2010-03-25T17:01:11.487 回答
1

如果你用撇号包围你的日期,它会起作用 -

SELECT DATEDIFF(day, '2010-02-20', '2010-01-10')

-41
于 2010-03-25T17:01:26.043 回答