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

SQL Server で DATETIME 値と DATE 値を正しく比較するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2025-01-04 17:27:39446ブラウズ

How Can I Correctly Compare DATETIME and DATE Values in SQL Server?

SQL Server での日時値と日付の比較

日時値を日付のみと比較すると、予期しない結果が生じる可能性があります。これは、datetime データ型には日付と時刻の両方のコンポーネントが含まれるためです。たとえば、datetime 型の DateCreated 列を持つユーザー テーブルがある場合、次のクエリ:

Select * from [User] U
where  U.DateCreated = '2014-02-07'     

は、ユーザーが 2014 年 2 月 7 日の 12 時に作成されたとしても、レコードを返しません。 :30:47.220.

日時を日付のみと正確に比較するには、次を使用しますメソッド:

Select * from [User] U 
where U.DateCreated >= '2014-02-07' and U.DateCreated < dateadd(day,1,'2014-02-07')

このクエリは SARGable です。つまり、DateCreated 列のインデックスを使用できます。

関数を使用しない理由

CONVERT などの関数を使用して日時から日付コンポーネントを抽出したくなるかもしれません。ただし、これはお勧めできません。 WHERE 句または結合条件での関数の使用:

  • フィールドでインデックスを使用するオプティマイザーの機能を削除します
  • データの各行に不要な計算を追加します

回避日付と時刻の範囲を扱う場合は、BETWEEN

BETWEEN も避けてください。代わりに次の形式を使用してください:

WHERE col >= '20120101' AND col < '20120201'

この形式は、時間部分に関係なく、すべてのデータ型と精度と互換性があります。

以上がSQL Server で DATETIME 値と DATE 値を正しく比較するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。