ホームページ > データベース > mysql チュートリアル > SQL Server で日時値を日付のみと正しく比較するにはどうすればよいですか?

SQL Server で日時値を日付のみと正しく比較するにはどうすればよいですか?

DDD
リリース: 2025-01-05 19:52:45
オリジナル
146 人が閲覧しました

How to Correctly Compare Datetime Values with Only Dates in SQL Server?

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

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