プロプログラマ

プログラマーを職業としてます。 Flex,Air,C#,Oracle,HTML+JSの言語ノウハウを中心に情報発信していきます

[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からとなります。
失礼致しました。

 

== ランキングに参加しています。ぜひクリックお願いします ==

プログラム ブログランキングへ
にほんブログ村 IT技術ブログへ
にほんブログ村

2 thoughts on “[SQLServer] 日付と時刻のフォーマット

  • より:

    FORMAT関数はSQLServer2008 R2 でも使えません。
    間違っています。

    • propg より:

      ご指摘ありがとうございます。
      2008R2では、DAXでのみ使用可能ということでした。
      記事を修正いたします。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください