SQLServerの日付型データをフォーマットされた文字列に変換したい時はありませんか?
今回仕事で日付型を文字列に変換する機会がありましたので、調べた結果をまとめました。
どのようなフォーマットに変換するにはスタイルを番号で指定するようです。
よく使われると思われる日付をフォーマットされた文字列に変換する方法を書いておきます。
CONVERTを使って日付をフォーマットして文字列に変換する方法
一番良く使うのが CONVERT を使って、日付を文字列に変換する方法です。
シンタックスは CONVERT ( data_type [ ( length ) ] , expression, style) で、 expression に変換したい日付が、
style には番号が入ります。
CONVERT を使った日付を文字列に変換するクエリーは以下の通りです。
DECLARE @Date DATETIME = GETDATE();
SELECT CONVERT(NVARCHAR, @Date, 101) AS ‘101’,– mm/dd/yyyy
CONVERT(NVARCHAR, @Date, 1) AS ‘1’,– mm/dd/yy
CONVERT(NVARCHAR, @Date, 111) AS ‘111’,– yyyy/mm/dd
CONVERT(NVARCHAR, @Date, 11) AS ’11’,– yy/mm/dd
CONVERT(NVARCHAR, @Date, 103) AS ‘103’,– dd/mm/yyyy
CONVERT(NVARCHAR, @Date, 3) AS ‘3’; — dd/mm/yy
SELECT CONVERT(NVARCHAR, @Date, 112) AS ‘112’,– yyyymmdd
CONVERT(NVARCHAR, @Date, 12) AS ’12’,– yymmdd
CONVERT(NVARCHAR, @Date, 108) AS ‘108’,– HH:mi:ss
CONVERT(NVARCHAR, @Date, 114) AS ‘114’;– HH:mi:ss:mmm
FORMAT を使って日付をフォーマットして文字列に変換する方法
次に『 SQLServer2012から』 は、FORMAT 関数を使って日付を変換することができます。
まずは、FORMAT 関数でカルチャーを指定して文字列に変換する方法です。
DECLARE @Date DATETIME = GETDATE();
SELECT FORMAT(@Date, ‘d’, ‘ja-JP’ ) AS ‘Japanese (Japan)’,
FORMAT(@Date, ‘d’, ‘en-US’ ) AS ‘English (US)’;
そして、最後になりましたが、FORMAT 関数ではカスタムの書式指定文字列を指定して、
日付や時刻をカスタムフォーマットすることも可能です。 とっても便利ですね!
DECLARE @Date DATETIME = GETDATE();
SELECT FORMAT(@Date, ‘yyyyMMddHHmmss’) AS ‘Custom’;
注意
年のyyyyは小文字、月のMMは大文字、ddの日は小文字です。
大文字、小文字をきちんと書かないと正確に変換されません。
最後に
仕事でSQLServerを使うようになりました。
oracleのSQLと若干違う部分がありますので仕事でつまずいた時には
調べてまた記事にしたいと思います。
コメント