【SQL Server】CONVERT でデータ型を変換する

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についてでした。

コメント