SQL Serverでdatetime, datetime2 型のフィールドの値をdate 型に変換して日付のみを扱うコードを紹介します。
概要
SQL Serverで日付や時刻をレコードに保存する場合、
datetime
や
datetime2
型のフィールドを利用します。
日付と時刻が記録できますが、日次で集計したい場合など、時刻を無視して扱いたいことがあります。SQL Server では
Date
型を利用することで、
時刻のない日付を扱えます。この記事では、datetime, datetime2 型を date型に変換して日付のみを扱えるようにするコードを紹介します。
書式
Convert関数を利用すると、型の変換ができます。
convert([変換先の型], [変換する値])
記述例
例1
次の記述は小数型(float)を整数値に変換します。
select convert(int, 2.454)
結果は以下になります。小数が整数に変換されています。
例1
次の記述は日付時刻型(datetime)を日付型(date)に変換します。
select convert(date, '2020/8/4 10:55:20')
結果は以下になります。日付時刻の値が日付のみの値に変換されています。
例:date型への変換
以下のテーブルを用意します。
dtlist テーブル
id (int) | recorddate (datetime2) | flag (int) |
1 | 2012-10-17 13:11:02.2530000 | 1 |
2 | 2012-04-06 12:58:18.6170000 | 2 |
3 | 2012-09-25 07:51:46.9470000 | 8 |
4 | 2012-09-05 14:05:52.6770000 | 4 |
5 | 2012-06-16 12:54:49.4530000 | 3 |
6 | 2012-10-11 13:06:24.4800000 | 1 |
7 | 2012-04-23 17:17:46.4600000 | 2 |
8 | 2012-11-06 17:07:04.3400000 | 6 |
次のクエリを実行します。
select id, convert(date, recorddate),flag from dtlist
結果は以下になります。datetime2型のrecorddateフィールドの値から時刻部分が除かれた値に変換できていることが確認できます。
id | (列名なし) | flag |
1 | 2012-10-17 | 1 |
2 | 2012-04-06 | 2 |
3 | 2012-09-25 | 8 |
4 | 2012-09-05 | 4 |
5 | 2012-06-16 | 3 |
6 | 2012-10-11 | 1 |
7 | 2012-04-23 | 2 |
8 | 2012-11-06 | 6 |
著者
iPentec.com の代表。ハードウェア、サーバー投資、管理などを担当。
Office 365やデータベースの記事なども担当。
最終更新日: 2020-06-24
作成日: 2020-06-24