[SQLServer] 日付と時刻のフォーマット
SQLServerで日付のフォーマットといえば、昔からCONVERT関数を使うのが普通でした。
SELECT CONVERT ( VARCHAR, GETDATE(), 111 ) as 日付1 , CONVERT( VARCHAR , GETDATE (), 108 ) as 時刻1
日付1 時刻1
2013/11/15 13:33:32
ですが、今のSQLServerには、FORMAT関数というのも使えるようです。
SELECT ,FORMAT( GETDATE (), 'yyyy/MM/dd' ) as 日付2 , FORMAT( GETDATE (), 'HH:mm:ss' ) as 時刻2
日付2 時刻2
2013/11/15 13:33:32
この指定では、どちらも同じ結果が返ります。
VBなどの言語に慣れている自分からすると、FORMAT関数のほうが随分分かりやすく感じます。
使い方もVBのそれとほぼ同じです。
時刻の分は表示したくない時など、柔軟に対応できます。
どうも前から、CONVERT関数は馴染めなかったんですよね。
パフォーマンスの面からどちらが優れているのか分からなかったのですが、好みに合わせてといったところでしょうか。
FORMAT関数はSQLServer2008 R2 SQLServer2012以降で使えます。
対象バージョンが使える方にはオススメです。
※2018/10/31 ご指摘いただきました。
MSDNにはSQLServer 2008 R2も対象となっていますが、正確にはDAX(Data Analysis eXpressions)でのみ使用可能ということで、通常のクエリでは使用できませんでした。
Format関数が通常のSQLで使用可能なのは、2012からとなります。
失礼致しました。
== ランキングに参加しています。ぜひクリックお願いします ==
LEFT JOINはLEFT OUTER JOINの省略形 今までメモリーリークしてたのか?
FORMAT関数はSQLServer2008 R2 でも使えません。
間違っています。
ご指摘ありがとうございます。
2008R2では、DAXでのみ使用可能ということでした。
記事を修正いたします。