ホームページ > データベース > mysql チュートリアル > SQL Server で日付のみのクエリを DateTime フィールドと正しく照合するにはどうすればよいですか?

SQL Server で日付のみのクエリを DateTime フィールドと正しく照合するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2025-01-04 12:17:35
オリジナル
563 人が閲覧しました

How to Correctly Match Date-Only Queries with DateTime Fields in SQL Server?

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 サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート