我运行一个简单的DATEDIFF查询,但它似乎并没有正确计算天或我做错了。

如果我运行

PRINT DATEDIFF(Day, 2010-01-20, 2010-01-01)
RETURN 19

哪个是正确的。如果我在第一次约会二月(02)更改月份我收到一些奇怪的事情。

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

现在不应它是48或什么?

任何人都可以看到我在做什么错误,或者如果我想这些日期之间的天不就是这个不被使用正确的功能?

我试着采取一个日期从其他:

PRINT (2010-02-20) - (2010-01-01)
RETURN -20

任何帮助非常赞赏。

由于 学家

有帮助吗?

解决方案

您缺少报价

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

你得到20,因为

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

2008 - 1988 = 20

其他提示

如果你运行它这种方式:

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

您将看到

1988  2008

这是结果还是整数运算,你把这里。

括日期常数成单引号:

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

--
-50

它的工作原理,如果你周围的日期与撇号 -

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

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

这需要第二日期 - 第一个日期。不要忘了'。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top