SQL Server での日付のみとの日時値の比較
日付部分のみを含む日時値との比較を使用してデータベース レコードをクエリする場合を理解することが重要です。
問題
次の SQL クエリを考えてみましょう:
Select * from [User] U where U.DateCreated = '2014-02-07'
ユーザーが '2014-02-07 12 に作成された場合: 30:47.220'、比較は日付部分に対して厳密に実行されるため、クエリはデータを返しません。
解決策
datetime 値を日付のみと正しく比較するには、1 日の始まりと終わりを括弧で囲む必要があります。
Select * from [User] U where U.DateCreated >= '2014-02-07' and U.DateCreated < dateadd(day,1,'2014-02-07')
このアプローチにより、時間に関係なく、指定された日付に作成されたレコードがクエリに確実に含まれます。 Component.
WHERE 句での関数の使用を避ける
いくつかの理由から、WHERE 句または結合条件での関数 (convert など) の使用を避けることが重要です。
BETWEEN どちらにも依存しないでください
一般的には日付と時刻の比較には BETWEEN 演算子を使用しないことをお勧めします。代わりに、次の形式を使用します。
WHERE col >= '20120101' AND col < '20120201'
このアプローチは、データ型や精度に関係なく一貫して機能し、BETWEEN での潜在的な落とし穴も回避します。
以上がSQL Server で日時値を日付のみと正しく比較するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。