SQL Server の日時フィールドと日付のみのクエリを照合する
日付のみの値を使用して SQL Server の日時フィールドをクエリする場合、正確な結果を保証するための影響を理解するため。
提供されている例:
Select * from [User] U where U.DateCreated = '2014-02-07'
ユーザーが '2014-02-07 12:30:47.220' に作成された場合、クエリは正確な日付時刻値のみを比較するため、結果は返されません。
推奨されるアプローチ
この問題を解決し、日付のみの値を正確に一致させるには日時フィールドを使用する場合は、次のアプローチを使用することをお勧めします。
Select * from [User] U where U.DateCreated >= '2014-02-07' and U.DateCreated < dateadd(day,1,'2014-02-07')
このクエリは、日時値が '2014-02-07' 以降、'2014-02 より前のすべてのレコードを含む範囲を指定します。 -08.'
SARGable 述語の重要性と回避関数
日時値を日付のみの基準と比較する場合は、where 句での Convert() などの関数の使用を避けることが重要です。これにより、インデックスの使用が妨げられ、クエリが遅くなり、不必要な計算が発生する可能性があります。代わりに、データに合わせてクエリを変更する (SARGable 述語の使用とも呼ばれる) ことで、クエリのパフォーマンスが向上します。
日付範囲クエリのベスト プラクティス
さらに、次のことをお勧めします。日付範囲をクエリする場合は、BETWEEN 演算子の使用を避けてください。代わりに、最適な結果を得るために次の形式を使用してください:
WHERE col >= '20120101' AND col < '20120201'
このアプローチにより、すべてのデータ型と精度との互換性が保証され、日時値の時間コンポーネントに関する潜在的な問題が排除されます。
以上がSQL Server で日付のみのクエリを DateTime フィールドと正しく照合するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。