【SQLレシピ】datetime型の年月日を文字列として取り出す
2022-6-9 | SQL
SQLでdatetime型の時刻は無視して年月日のみを文字列として取り出したい!
概要
この記事では、datetime型の時刻は無視して年月日のみを文字列として取り出す手順を掲載する。
仕様書
環境
- SQL Server 15.0.2000
手順書
下表のような人事情報を記録してるテーブルEmployeeを例にする。(サンプルなので正規化とか列名が不適切とかジョバンニが東京勤務とかは無視して下さい)
| 列名 | データ型 | 備考 |
|---|---|---|
| ID | INTEGER | ユニークな連番 |
| JoinedAt | datetime | 入社した日時 |
| Name | TEXT | 氏名 |
登録してるデータは下記のとおり。
| ID | JoinedAt | Name |
|---|---|---|
| 1 | 2001/04/01 9:00 | ジョバンニ |
| 2 | 2001/04/01 9:00 | カムパネルラ |
| 3 | 2001/07/07 12:00 | ザネリ |
| 4 | 2002/04/01 18:00 | マルソ |
今回は氏名(Name列)とJoinedAt列をVARCHAR型でyyyy/mm/dd形式で出力してみる。
SELECT
Name,
CONVERT(VARCHAR, JoinedAt, 111)
FROM Employee
クエリを実行すると下記のように重複内でデータの数が出力される。
| Name | (列名なし) |
|---|---|
| ジョバンニ | 2001/04/01 |
| カムパネルラ | 2001/04/01 |
| ザネリ | 2001/07/07 |
| マルソ | 2002/04/01 |
CONVERT関数の第3引数によって出力される形式が変わる。
例をいくつか挙げる。
| 入力 | 第3引数 | 出力 |
|---|---|---|
| 2001/04/01 9:00 | 111 | 2001/04/01 |
| 2001/04/01 9:00 | 11 | 01/04/01 |
| 2001/04/01 9:00 | 112 | 20010401 |
| 2001/04/01 9:00 | 12 | 010401 |
| 2001/04/01 9:00 | 120 | 2001-04-01 9:00:00 |
| 2001/04/01 9:00 | 20 | 2001-04-01 9:00:00 |
| 2001/04/01 9:00 | 121 | 2001-04-01 9:00:00.000 |
| 2001/04/01 9:00 | 21 | 2001-04-01 9:00:00.000 |
まとめ(感想文)
簡単に日計のデータを作るのに便利かもね!
