CONVERT データ型の変換
CONVERTの構文
SQL Serverでデータ型を変換するには「CONVERT」を使用します。他にはCASTもあります。
CONVERT(変換後のデータ型, 値, スタイル(省略可))
- 「値」を「変換後のデータ型」に変換する
- 互換性のあるデータ型に対してのみCONVERTできる
スタイル
2 桁年
(yy) |
4 桁年
(yyyy) |
スタイル | コメント |
– | 0
100 |
mon dd yyyy hh:miAM (PM) | datetime、smalldatetime の既定値 |
1 | 101 | 1 = mm/dd/yy
101 = mm/dd/yyyy |
米国 |
2 | 102 | 2 = yy.mm.dd
102 = yyyy.mm.dd |
ANSI |
3 | 103 | 3 = dd/mm/yy
103 = dd/mm/yyyy |
イギリス/フランス |
4 | 104 | 4 = dd.mm.yy
104 = dd.mm.yyyy |
ドイツ語 |
6 | 106 | 6 = dd mon yy
106 = dd mon yyyy |
– |
7 | 107 | 7 = Mon dd, yy
107 = Mon dd, yyyy |
– |
8 | 108 | hh:mi:ss | – |
– | 9
109 |
mon dd yyyy hh:mi:ss:mmmAM (PM) | 既定値 + ミリ秒 |
10 | 110 | 10 = mm-dd-yy
110 = mm-dd-yyyy |
米国 |
11 | 111 | 11 = yy/mm/dd
111 = yyyy/mm/dd |
日本 |
12 | 112 | 12 = yymmdd
112 = yyyymmdd |
ISO |
– | 13
113 |
dd mon yyyy hh:mi:ss:mmm(24h) | ヨーロッパの既定値 + ミリ秒 |
14 | 114 | hh:mi:ss:mmm(24h) | – |
– | 20
120 |
yyyy-mm-dd hh:mi:ss(24h) | ODBC 標準 |
– | 21
121 |
yyyy-mm-dd hh:mi:ss.mmm(24h) | time、date、datetime2、および datetimeoffset の ODBC 標準の既定値 |
– | 126 | yyyy-mm-ddThh:mi:ss.mmm (スペースなし) | ISO8601 |
– | 127 | yyyy-mm-ddThh:mi:ss.mmmZ (スペースなし) | ISO 8601 (タイム ゾーン Z) |
– | 130 | dd mon yyyy hh:mi:ss:mmmAM | Hijri |
– | 131 | dd/mm/yyyy hh:mi:ss:mmmAM | Hijri |
例1. 数値型→文字列型にデータ型変換するパターン
--数値を文字列型に変換する SELECT CONVERT(VARCHAR(10), 100) + 'A'; [結果] 100A SELECT CONVERT(CHAR(10), 100) + 'A'; [結果] 100 A
ここでは数値の「100」を文字列型に変換しました。VARCHARだとわかりにくいのですが、固定長のCHAR型だと変換されたことがわかります。
例2. 文字列型→日付型にデータ型変換するパターン
--文字列型を日付型に変換する SELECT CONVERT(DATE, '2022-09-01'); [結果] 2022/09/01 SELECT CONVERT(DATETIME, '2022-09-01 19:01:30'); [結果] 2022/09/01 19:01:30
ここでは文字列「2022/01/01」を日付型「DATE」に変換し、文字列「2022/09/01 19:01:30」を日付時間型「DATETIME」に変換しました。
例3. 日付型→文字列型にデータ型変換するパターン
--日付型を文字列型に変換する SELECT CONVERT(VARCHAR(30), GETDATE(), 11); [結果] 22/01/01 SELECT CONVERT(VARCHAR(30), GETDATE(), 111); [結果] 2022/01/01
ここでは日付型「DATE」を文字列型「VARCHAR」に変換し、スタイルをそれぞれ「11:
yy/mm/dd」「111:yyyy/mm/dd」にしました。
以上、SQL Serverでデータ型を変換するCONVERTについてでした。
コメント