web-dev-qa-db-ja.com

MSSQL GetDate()を使用しているときに日付だけを取得するにはどうすればよいですか?

DELETE from Table WHERE Date > GETDATE();

GETDATE()には時間が含まれます。取得する代わりに

2011-01-26 14:58:21.637

どうすれば入手することができますか:

2011-01-26 00:00:00.000
72
sooprise

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)
75
gbn

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でラップする必要はありません。

9
RichardTheKiwi

データベース固有です。使用しているデータベースエンジンを指定していません。

例えばPostgreSQLでは、cast(myvalue as date)を実行します。

7
FolksLord
SELECT CONVERT(DATETIME, CONVERT(varchar(10), GETDATE(), 101))
5
JohnOpincar

使用できます

DELETE from Table WHERE Date > CONVERT(VARCHAR, GETDATE(), 101);
0