2010-03-25 104 views
5

我正在運行一個簡單的DATEDIFF查詢,但它似乎沒有正確計算日子或我做錯了什麼。SQL 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.

+0

@詹姆斯 - 沒有它不應該是48 ...你應該把更大的日期作爲最後一個參數。否則結果是否定的。不要忘記「'。請參閱下面的答案。 – JonH 2010-03-25 17:02:51

+0

我並不是說48就是'不應該是48或者什麼',我只是在腦海中做了一個快速計算。 感謝您的幫助。 – JBoom 2010-03-25 17:13:18

回答

4

你缺少引號

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

你得到20因爲

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

2008 - 1988 = 20 
+0

哎呀什麼一個笨蛋,我怎麼沒有得到的....感謝您的幫助。 – JBoom 2010-03-25 17:07:03

1

如果你運行它是這樣的:

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

你會看到

1988 2008 

這些是結果或您在此放置的整數運算。

將Date常數爲單引號:

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

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

這需要第二日 - 第一次約會。不要忘記''。

1

如果你的周圍有日期撇號它的工作原理 -

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

-41