1. ホーム
  2. sql-server

[解決済み] Microsoft SQL Serverで日付のみを使用してDATETIMEフィールドを照会する方法は?

2023-02-06 13:29:51

質問

テーブルTESTに DATETIME フィールドがあり、このように

ID NAME DATE
1 TESTING 2014-03-19 20:05:20.000

この行と、時刻に関係なく2014/03/19の日付を持つすべての行を返すクエリが必要です。私は使用してみました

select * from test where date = '03/19/2014';

しかし、それは行を返しません。私が見つけたそれを動作させる唯一の方法は、日付の時間部分をも提供することです。

select * from test where date = '03/19/2014 20:03:02.000';

どのように解決するのですか?

範囲を指定するか、DateDiff関数を使用する。

 select * from test 
 where date between '03/19/2014' and '03/19/2014 23:59:59'

または

 select * from test 
 where datediff(day, date, '03/19/2014') = 0

その他のオプションは

  1. データベーススキーマを制御することができ、時間データが必要でない場合は 時間データが必要ない場合は、取り除いてください。

  2. または、どうしても残したい場合は、日付値の時間部分を取り除いた計算列属性を追加してください...。

Alter table Test Add DateOnly As DateAdd(day, datediff(day, 0, date), 0)

または、SQL Server の最近のバージョンでは...

Alter table Test Add DateOnly As Cast(DateAdd(day, datediff(day, 0, date), 0) as Date)

とすると、クエリを簡単に書くことができます。

select * from test 
where DateOnly = '03/19/2014'