日付型を文字列に変換する方法
日付型のデータを文字列に変更する方法を説明します。
まず、日付型のデータを文字列に変換する方法は2つあります。
- CONVERT 関数を使う
- FORMAT 関数を使う
基本は、直感的にわかりやすいFORMAT 関数を使うのがおすすめですが、古いバージョンのSQL Serverであれば、あきらめてCONVERT 関数を使いましょう。
ふたつの関数の違いは、
CONVERT 関数
基本パターンがあるので基本パターンを指定して文字列にする。
基本パターンがあるので基本パターンを指定して文字列にする。
FORMAT 関数
パターンを自分で決めて文字列にする。
パターンを自分で決めて文字列にする。
内容
CONVERT 関数 と FORMAT 関数 をそれぞれ実行して結果を確認してみましょう。
CONVERT 関数を使う
基本的には、第3引数に3桁の数字を指定しますが、年を2桁だ表示する場合は、100の位を省略した数字を指定します。
※一部yyyy → yy の切替がないものもあります。
日本で使うならほぼ
111
yyyy/mm/dd
yyyy/mm/dd
112
yyyymmdd
yyyymmdd
120
yyyy-mm-dd hh:mi:ss
yyyy-mm-dd hh:mi:ss
121
yyyy-mm-dd hh:mi:ss.mmm
yyyy-mm-dd hh:mi:ss.mmm
のいずれかで事足りると思います。
基本構文
CONVERT(変換先の型, 日付,[パターンを数字で指定])
SELECT GETDATE() -- yyyy-mm-dd hh:mi:ss:mmm SELECT CONVERT(nvarchar, GETDATE()) -- mon dd yyyy hh:miAM (または PM) SELECT CONVERT(nvarchar, GETDATE(),100)-- mon dd yyyy hh:miAM (または PM) SELECT CONVERT(nvarchar, GETDATE(),101)-- mm/dd/yyyy SELECT CONVERT(nvarchar, GETDATE(), 1)-- mm/dd/yy SELECT CONVERT(nvarchar, GETDATE(),102)-- yyyy.mm.dd SELECT CONVERT(nvarchar, GETDATE(), 2)-- yy.mm.dd SELECT CONVERT(nvarchar, GETDATE(),103)-- dd/mm/yyyy SELECT CONVERT(nvarchar, GETDATE(), 3)-- dd/mm/yy SELECT CONVERT(nvarchar, GETDATE(),104)-- dd.mm.yyyy SELECT CONVERT(nvarchar, GETDATE(), 4)-- dd.mm.yy SELECT CONVERT(nvarchar, GETDATE(),105)-- dd-mm-yyyy SELECT CONVERT(nvarchar, GETDATE(), 5)-- dd-mm-yy SELECT CONVERT(nvarchar, GETDATE(),106)-- dd mon yyyy SELECT CONVERT(nvarchar, GETDATE(), 6)-- dd mon yy SELECT CONVERT(nvarchar, GETDATE(),107)-- Mon dd, yyyy SELECT CONVERT(nvarchar, GETDATE(), 7)-- Mon dd, yy SELECT CONVERT(nvarchar, GETDATE(),108)-- hh:mi:ss SELECT CONVERT(nvarchar, GETDATE(),109)-- mon dd yyyy hh:mi:ss:mmmAM (または PM) SELECT CONVERT(nvarchar, GETDATE(),110)-- mm-dd-yyyy SELECT CONVERT(nvarchar, GETDATE(), 10)-- mm-dd-yy SELECT CONVERT(nvarchar, GETDATE(),111)-- yyyy/mm/dd SELECT CONVERT(nvarchar, GETDATE(), 11)-- yy/mm/dd SELECT CONVERT(nvarchar, GETDATE(),112)-- yyyymmdd SELECT CONVERT(nvarchar, GETDATE(), 12)-- yy/mm/dd SELECT CONVERT(nvarchar, GETDATE(),113)-- dd mon yyyy hh:mi:ss:mmm (24h) SELECT CONVERT(nvarchar, GETDATE(),114)-- hh:mi:ss:mmm (24h) SELECT CONVERT(nvarchar, GETDATE(),120)-- yyyy-mm-dd hh:mi:ss (24h) SELECT CONVERT(nvarchar, GETDATE(),121)-- yyyy-mm-dd hh:mi:ss.mmm (24h)
FORMAT 関数を使う
SQLServer 2012 以降ならFORMAT関数にしましょう。読みやすさが段違いです。
FORMAT関数 で指定する「月」は大文字で「MM」、「分」は小文字で「mm」です。
SELECT FORMAT(GETDATE(),'yyyy/MM/dd') AS 'yyyy/MM/dd' SELECT FORMAT(GETDATE(),'yyyy-MM-dd') AS 'yyyy-MM-dd' SELECT FORMAT(GETDATE(),'yyyyMMdd') AS 'yyyyMMdd' SELECT FORMAT(GETDATE(),'yyMMdd') AS 'yyMMdd' SELECT FORMAT(GETDATE(),'HH:mm:ss') AS 'HH:mm:ss'
または、国を形式に指定することも出来ます。
SELECT FORMAT(GETDATE(), 'd', 'ja-JP' ) AS '日本形式' SELECT FORMAT(GETDATE(), 'd', 'en-US' ) AS '米国形式'
コメント