2010-12-08 18 views
2

怠け者の質問を申し訳ありません。 SQL Server 2005の構文を知りたいsql server datetime where句

SELECT * 
    FROM myTable 
WHERE myDateTimeField > "4am this morning" 

ご協力いただきありがとうございます。

答えて

3

用途:

SELECT * 
    FROM myTable 
WHERE myDateTimeField > DATEADD(hh, 4, DATEADD(dd, DATEDIFF(dd,0,GETDATE()), 0)) 

この:

DATEADD(dd, DATEDIFF(dd,0,getdate()), 0) 

...現在の日の深夜にDATETIMEを返します。だから、外側のDATEADDは、今日の午前4時にDATETIMEを与えるために、深夜にその日付に4時間を追加します。

参考:

1

SELECT * FROM myTable 
WHERE myDateTimeField > 
     DateAdd(hour, 4, DateAdd(day, DateDiff(day, 0, getdate()), 0)) 
+0

@omg、you r quick –

1

を試してみて、ちょうど他の製品とは異なる、と間違いなく短い/読みやすくするために:

SELECT * 
    FROM myTable 
WHERE myDateTimeField > 
     cast(convert(varchar, getdate(), 101) + ' 4AM' as datetime) 

もちろん、4AMをハードコーディングしたくないかもしれませんが、そうした場合、この方法はあなたの意図を伝達するのにうってつけです。

+0

FYI:日付切り捨ての最も速い方法SQL ServerはDATEADD/DATEDIFFアプローチを使用します。 –