【SQL Server】日付型を文字列に変換する方法

SQL Server
この記事は約5分で読めます。

日付型を文字列に変換する方法

日付型のデータを文字列に変更する方法を説明します。

まず、日付型のデータを文字列に変換する方法は2つあります。

  1. CONVERT 関数を使う
  2. FORMAT 関数を使う
FORMAT 関数はSQL Server 2012 以降でしか使えません。

基本は、直感的にわかりやすいFORMAT 関数を使うのがおすすめですが、古いバージョンのSQL Serverであれば、あきらめてCONVERT 関数を使いましょう。

ふたつの関数の違いは、

CONVERT 関数
基本パターンがあるので基本パターンを指定して文字列にする。
FORMAT 関数
パターンを自分で決めて文字列にする。

内容

CONVERT 関数 と FORMAT 関数 をそれぞれ実行して結果を確認してみましょう。

CONVERT 関数を使う

基本的には、第3引数に3桁の数字を指定しますが、年を2桁だ表示する場合は、100の位を省略した数字を指定します。
※一部yyyy → yy の切替がないものもあります。

日本で使うならほぼ

111
yyyy/mm/dd
112
yyyymmdd
120
yyyy-mm-dd hh:mi:ss
121
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 '米国形式'

 

 

コメント

タイトルとURLをコピーしました