佐々木屋

技術的なことから趣味まで色々書きます

datetime型から日付を操作

SQL-Serverのdatetime型の値を日付のみだったり時間のみだったりで操作する方法です。
普段はプログラム側で制御する事が多いですが、結合やWHERE句での条件設定の際はよく使用します。
例えば、以下のテーブルを考えます。

支店コード 支店名 アクセス日時
001 岐阜支店 2018-12-11 19:07:33
002 多治見支店 2018-12-12 22:39:46
003 大垣支店 2018-12-21 09:15:53
004 山県支店 2018-12-20 18:19:24
005 各務原支店 2018-12-21 09:31:30


これを日付のみでSELECTします。

SELECT * FROM テーブルA WHERE アクセス日時 = '2018/12/21'

当然ながら、結果は何も取得できません。
アクセス日時 = '2018/12/21'
は、
アクセス日時 = '2018/12/21 00:00:00'
という解釈になる為です。

この場合は、CONVERT関数を使用します。

SELECT * FROM テーブルA WHERE CONVERT(date,アクセス日時) = '2018/12/21'

支店コード 支店名 アクセス日時
003 大垣支店 2018-12-21 09:15:53
005 各務原支店 2018-12-21 09:31:30

なお、同じ型変換でCAST関数もありますが、基本的にCONVERT関数が上位なので、あえてCAST関数を使用することはないでしょう。