datetime, datetime2 型のフィールドの値をdate 型に変換する - SQL Server

SQL Serverでdatetime, datetime2 型のフィールドの値をdate 型に変換して日付のみを扱うコードを紹介します。

概要

SQL Serverで日付や時刻をレコードに保存する場合、datetimedatetime2 型のフィールドを利用します。
日付と時刻が記録できますが、日次で集計したい場合など、時刻を無視して扱いたいことがあります。SQL Server ではDate型を利用することで、 時刻のない日付を扱えます。この記事では、datetime, datetime2 型を date型に変換して日付のみを扱えるようにするコードを紹介します。

書式

Convert関数を利用すると、型の変換ができます。
convert([変換先の型], [変換する値])

記述例

例1

次の記述は小数型(float)を整数値に変換します。
select convert(int, 2.454)
結果は以下になります。小数が整数に変換されています。
(列名なし)
2

例1

次の記述は日付時刻型(datetime)を日付型(date)に変換します。
select convert(date, '2020/8/4 10:55:20')
結果は以下になります。日付時刻の値が日付のみの値に変換されています。
(列名なし)
2020-08-04

例:date型への変換

以下のテーブルを用意します。
dtlist テーブル
id (int)recorddate (datetime2)flag (int)
12012-10-17 13:11:02.25300001
22012-04-06 12:58:18.61700002
32012-09-25 07:51:46.94700008
42012-09-05 14:05:52.67700004
52012-06-16 12:54:49.45300003
62012-10-11 13:06:24.48000001
72012-04-23 17:17:46.46000002
82012-11-06 17:07:04.34000006

次のクエリを実行します。
select id, convert(date, recorddate),flag from dtlist

結果は以下になります。datetime2型のrecorddateフィールドの値から時刻部分が除かれた値に変換できていることが確認できます。
id(列名なし)flag
12012-10-171
22012-04-062
32012-09-258
42012-09-054
52012-06-163
62012-10-111
72012-04-232
82012-11-066
著者
iPentec.com の代表。ハードウェア、サーバー投資、管理などを担当。
Office 365やデータベースの記事なども担当。
最終更新日: 2020-06-24
作成日: 2020-06-24
iPentec all rights reserverd.