5


0

SQL 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か何かにすべきではないでしょうか?

誰が私が間違っているのかを見ることができますか、これらの日付の間の日数が必要な場合、これは使用する正しい機能ではありませんか?

私は他から1つの日付を取得しようとしました:

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

任意の助けは大歓迎です。

ありがとう

4 Answer


4


引用符がありません

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

あなたは20を得ています

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

2008 - 1988 = 20


1


この方法で実行する場合:

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

あなたが表示されます

1988  2008

ここに入力した結果または整数演算です。

日付定数を単一引用符で囲みます。

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

--
-50


1


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

それは2番目の日付-最初の日付を取ります。 ''を忘れないでください。


1


日付をアポストロフィで囲むと機能します-

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

-41