2012-05-02 11 views
0

ODBCの日付/時刻であるstatusdateという列を持つSQL Serverテーブルがあります。
SELECT query WHERE statusdateは、2つの日付(開始日と終了日)の間の範囲を返すことができるように作成する必要があります。私はWHEREステートメントでDATEDIFFを使用するように言われました。これは正しいのですが、構文は何ですか?与えられた2つの日付間でクエリを返すSQL Serverの構文

あなただけ BETWEENをしないのはなぜ
+1

これはどういう意味ですか? "statusdateは2つの日付間の範囲を返すことができます"。あなたはSQLの 'between'キーワードを探していますか?それはあなたの描写ではないからです。 – Marc

答えて

0

:?

SELECT * 
FROM YourTable 
WHERE statusdate BETWEEN StartDate AND EndDate 
+0

データ型がDATETIME、DATETIME2、SMALLDATETIMEなどの場合、BETWEENは賢明ではありません。両端が開いている範囲がはるかに安全です。 –

+0

@AaronBertrand - Yeap、あなたは正しいです。それが問題なのかどうかは疑問にはっきりしていませんでしたが、それは日付について話していたので、私はMikaelErikssonのように、私のasnwerでこれについて明確にしていたはずです。 – Lamak

+0

Lamak - BETWEENは魅力的な働きをした...ありがとう。 –

3

は、SQL Server 2012分の2008との間であなたが使用することができますdateデータ型を使用している場合。

select * 
from YourTable 
where statusdate between @StartDate and @EndDate 

あなたがdatetimeを使用している場合、私はあなたが関係なく、時間の部分のすべての値を取得することを確認する代わりに>=<を使用することをお勧め。

select * 
from YourTable 
where statusdate >= @StartDate and 
     statusdate < dateadd(day, 1, @EndDate) 

更新

私は私のWHERE文でDATEDIFFを使用するように言われてきました。これは正しいですか

いいえ、これにはdatediffを使用しないでください。

とは何ですか?

ここに...使用しないでください。

select * 
from YourTable 
where datediff(day, statusdate, @StartDate) = 0 and 
     datediff(day, statusdate, @EndDate) = 0 
+1

+1個人的に私は "date **データ型で"と** only **と言うでしょう: ":-) –

関連する問題