DELETE from Table WHERE Date > GETDATE();
GETDATE()には時間が含まれます。取得する代わりに
2011-01-26 14:58:21.637
どうすれば入手することができますか:
2011-01-26 00:00:00.000
SQL Serverへのわずかなバイアス
概要
DATEADD(day, DATEDIFF(day, 0, GETDATE()), 0)
ただし、SQL Server 2008にはdate
タイプがあります。だからただ使う
CAST(GETDATE() AS DATE)
編集:1日追加するには、「ゼロ」の前日と比較します
DATEADD(day, DATEDIFF(day, -1, GETDATE()), 0)
Cyberkiwiから:
2つの関数を含まない代替手段は(+1は括弧内または括弧内にあります)です。
DATEDIFF(DAY, 0, GETDATE() +1)
DateDiff
は数値を返しますが、すべての目的で、この式を使用する場合はいつでも日付として機能します。ただし、直接VARCHARに変換する場合を除きます。この場合、GETDATE()でCONVERTアプローチを直接使用します例えば.
convert(varchar, GETDATE() +1, 102)
SQL Server 2008の場合、最良のインデックスフレンドリーな方法は
DELETE from Table WHERE Date > CAST(GETDATE() as DATE);
以前のバージョンのSQL Serverでは、日付の計算はvarcharに変換するよりも速く動作します。 varcharに変換しても、地域の設定により、間違った結果が得られる可能性があります。
DELETE from Table WHERE Date > DATEDIFF(d, 0, GETDATE());
注:DATEDIFF
を別のDATEADD
でラップする必要はありません。
データベース固有です。使用しているデータベースエンジンを指定していません。
例えばPostgreSQLでは、cast(myvalue as date)を実行します。
SELECT CONVERT(DATETIME, CONVERT(varchar(10), GETDATE(), 101))
使用できます
DELETE from Table WHERE Date > CONVERT(VARCHAR, GETDATE(), 101);