SQL Serverで日付型を文字列に変換する
日付型を文字列に変換する場合、VBではFORMAT関数、JAVAではToStringメソッドでyyyyMMddのような日付書式を指定して変換しますが、SQL Serverでは日付書式を指定した文字列への変換ができません。
そこで、SQL Serverで日付型を文字列に変換する方法を紹介します。
CONVERT関数
SQL Serverで日付型を文字列に変換するにはCONVERT関数を使用します。
コーディング例
BEGIN DECLARE @DATE DATETIME = CONVERT(DATETIME,'2019-01-02 03:04:05:678',121); SELECT 100 AS [Style], CONVERT(VARCHAR,@DATE,100) AS [日付] UNION SELECT 101 AS [Style], CONVERT(VARCHAR,@DATE,101) AS [日付] UNION SELECT 102 AS [Style], CONVERT(VARCHAR,@DATE,102) AS [日付] UNION SELECT 103 AS [Style], CONVERT(VARCHAR,@DATE,103) AS [日付] UNION SELECT 104 AS [Style], CONVERT(VARCHAR,@DATE,104) AS [日付] UNION SELECT 105 AS [Style], CONVERT(VARCHAR,@DATE,105) AS [日付] UNION SELECT 106 AS [Style], CONVERT(VARCHAR,@DATE,106) AS [日付] UNION SELECT 107 AS [Style], CONVERT(VARCHAR,@DATE,107) AS [日付] UNION SELECT 108 AS [Style], CONVERT(VARCHAR,@DATE,108) AS [日付] UNION SELECT 109 AS [Style], CONVERT(VARCHAR,@DATE,109) AS [日付] UNION SELECT 110 AS [Style], CONVERT(VARCHAR,@DATE,110) AS [日付] UNION SELECT 111 AS [Style], CONVERT(VARCHAR,@DATE,111) AS [日付] UNION SELECT 112 AS [Style], CONVERT(VARCHAR,@DATE,112) AS [日付] UNION SELECT 113 AS [Style], CONVERT(VARCHAR,@DATE,113) AS [日付] UNION SELECT 114 AS [Style], CONVERT(VARCHAR,@DATE,114) AS [日付] UNION SELECT 120 AS [Style], CONVERT(VARCHAR,@DATE,120) AS [日付] UNION SELECT 121 AS [Style], CONVERT(VARCHAR,@DATE,121) AS [日付] UNION SELECT 126 AS [Style], CONVERT(VARCHAR,@DATE,126) AS [日付] UNION SELECT 127 AS [Style], CONVERT(VARCHAR,@DATE,127) AS [日付] ; SELECT 0 AS [Style], CONVERT(VARCHAR,@DATE,0) AS [日付] UNION SELECT 1 AS [Style], CONVERT(VARCHAR,@DATE,1) AS [日付] UNION SELECT 2 AS [Style], CONVERT(VARCHAR,@DATE,2) AS [日付] UNION SELECT 3 AS [Style], CONVERT(VARCHAR,@DATE,3) AS [日付] UNION SELECT 4 AS [Style], CONVERT(VARCHAR,@DATE,4) AS [日付] UNION SELECT 5 AS [Style], CONVERT(VARCHAR,@DATE,5) AS [日付] UNION SELECT 6 AS [Style], CONVERT(VARCHAR,@DATE,6) AS [日付] UNION SELECT 7 AS [Style], CONVERT(VARCHAR,@DATE,7) AS [日付] UNION SELECT 8 AS [Style], CONVERT(VARCHAR,@DATE,8) AS [日付] UNION SELECT 9 AS [Style], CONVERT(VARCHAR,@DATE,9) AS [日付] UNION SELECT 10 AS [Style], CONVERT(VARCHAR,@DATE,10) AS [日付] UNION SELECT 11 AS [Style], CONVERT(VARCHAR,@DATE,11) AS [日付] UNION SELECT 12 AS [Style], CONVERT(VARCHAR,@DATE,12) AS [日付] UNION SELECT 13 AS [Style], CONVERT(VARCHAR,@DATE,13) AS [日付] UNION SELECT 14 AS [Style], CONVERT(VARCHAR,@DATE,14) AS [日付] UNION SELECT 20 AS [Style], CONVERT(VARCHAR,@DATE,20) AS [日付] UNION SELECT 21 AS [Style], CONVERT(VARCHAR,@DATE,21) AS [日付] ; END
CONVERT関数の第1引数には変換先のデータ型を指定しますので「VARCHAR」を指定しています。
第2引数には変換元の値を指定しますので、DATETIME型の変数「@DATE」を指定しています。
第3引数には変換するスタイルを指定します。スタイルはあらかじめ決められた値を指定します。
実行結果
Style | 日付 |
---|---|
100 | 01 2 2019 3:04AM |
101 | 01/02/2019 |
102 | 2019.01.02 |
103 | 02/01/2019 |
104 | 02.01.2019 |
105 | 02-01-2019 |
106 | 02 01 2019 |
107 | 01 02, 2019 |
108 | 03:04:05 |
109 | 01 2 2019 3:04:05:677AM |
110 | 01-02-2019 |
111 | 2019/01/02 |
112 | 20190102 |
113 | 02 01 2019 03:04:05:677 |
114 | 03:04:05:677 |
120 | 2019-01-02 03:04:05 |
121 | 2019-01-02 03:04:05.677 |
126 | 2019-01-02T03:04:05.677 |
127 | 2019-01-02T03:04:05.677 |
Style | 日付 |
---|---|
0 | 01 2 2019 3:04AM |
1 | 01/02/19 |
2 | 19.01.02 |
3 | 02/01/19 |
4 | 02.01.19 |
5 | 02-01-19 |
6 | 02 01 19 |
7 | 01 02, 19 |
8 | 03:04:05 |
9 | 01 2 2019 3:04:05:677AM |
10 | 01-02-19 |
11 | 19/01/02 |
12 | 190102 |
13 | 02 01 2019 03:04:05:677 |
14 | 03:04:05:677 |
20 | 2019-01-02 03:04:05 |
21 | 2019-01-02 03:04:05.677 |
一般的によく使われるスタイルは「102」「111」「121」あたりでしょうか。
スタイルを100未満にすると西暦2桁になるようです。
以上、「SQL Serverで日付型を文字列に変換する」でした。
注意!!
SQL Server 2017以降ではFORMAT関数が使用できるようになりました。