ホームページ >データベース >mysql チュートリアル >SQL Server で DATETIME 値と DATE 値を正しく比較するにはどうすればよいですか?
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 サイトの他の関連記事を参照してください。