SQL Serverでは、T-SQL FORMAT()
を使用できます 日付や時刻をフォーマットする関数。単に2つの引数を提供します。使用する日付/時刻と形式。
フォーマットはフォーマット文字列として提供されます。フォーマット文字列は、出力のフォーマット方法を定義します。
FORMAT()
関数は、オプションの「カルチャ」引数も受け入れます。これにより、結果が準拠する言語/ロケールを指定できます。
基本的な例
FORMAT()
を使用する基本的な例を次に示します。 日付をフォーマットする関数。
生の日付
まず、生の日付は次のようになります。次のステートメントを実行すると:
SELECT GETDATE();
次のような結果が得られます:
2018-05-03 02:36:54.480
フォーマットされた日付
これで、FORMAT()
を使用できます その日付と時刻を優先形式にフォーマットする関数。たとえば、次のようにすることができます:
SELECT FORMAT( GETDATE(), 'D');
その結果:
Thursday, May 3, 2018
これは、私たちが選択できる多くの形式の1つにすぎません。もう1つ:
SELECT FORMAT( GETDATE(), 'd');
その結果:
5/3/2018
実際の結果は、使用するカルチャによって異なります。デフォルトでは、現在のセッションの言語が使用されますが、これを3番目の(「カルチャ」)引数でオーバーライドすることもできます。
ロケールの設定
上記のコードに3番目の(「カルチャ」)引数を追加して、日付の形式に使用するロケールを決定できます。
たとえば、これを行うことができます:
SELECT FORMAT( GETDATE(), 'd', 'en-gb');
その結果:
03/05/2018
別の例を次に示します。
SELECT FORMAT( GETDATE(), 'd', 'zh-cn');
その結果:
2018/5/3
文化の場合 引数が指定されていない場合、現在のセッションの言語が使用されます。
現在のセッションの言語を見つける方法と設定する方法は次のとおりです。
現在の言語は通常、ユーザーのデフォルト言語と同じですが、ユーザーがSET LANGUAGE
を使用して現在の言語を変更した場合はそうではない可能性があることに注意してください。 。いずれにせよ、デフォルトの言語が何であるかを知ることもできます。
ご想像のとおり、現在の言語や「文化」の議論の価値によって、まったく異なる結果が得られる可能性があります。その他の例については、言語設定がFORMAT()の結果にどのように影響するかをご覧ください。
月/週/年の抽出
FORMAT()
を使用できます 必要に応じて、日付の月の部分、週、または年のみを返す関数。
これらは大文字と小文字が区別されることに注意してください。例:MMM
月のフォーマットをmmm
に変更します 。
月
月の部分を返すためのサンプルコード:
SELECT FORMAT( GETDATE(), 'MMM');
結果:
May
年
年の部分を返すためのサンプルコード:
SELECT FORMAT( GETDATE(), 'yyyy');
結果:
2018
日
日の部分を返すためのサンプルコード:
SELECT FORMAT( GETDATE(), 'dddd');
結果:
Thursday
時間の抽出
FORMAT()
を使用することもできます 指定された形式で時刻を返す関数。
次に例を示します:
SELECT FORMAT( GETDATE(), 'hh.mm');
結果:
03.37
AM/PM指定子
tt
を追加することもできます AM / PM指定子を含めるには:
SELECT FORMAT( GETDATE(), 'hh.mm tt');
結果:
03.37 AM
フォーマット文字列の組み合わせ
これらのフォーマット文字列を組み合わせて、独自のカスタマイズされた日付フォーマットを提供することもできます。例:
SELECT FORMAT( GETDATE(), 'hh.mm tt dddd, dd MMMM, yyyy');
結果:
03.41 AM Thursday, 03 May, 2018
日付と時刻の形式指定子リファレンス
次の記事には、FORMAT()
で使用できるすべての日付と時刻の形式指定子が含まれています。 SQL Serverの関数とT-SQLの例:
- 標準の日付と時刻の形式の文字列
- カスタムの日付と時刻の形式の文字列
これらは、.NET Frameworkでサポートされているのと同じ日付と時刻の形式指定子です(FORMAT()
関数は.NETFrameworkに依存しています。
数値形式指定子リファレンス
次の記事には、FORMAT()
で使用できるすべての数値形式指定子が含まれています。 関数(つまり、数値をフォーマットするため):
- 標準の数値形式の文字列
- カスタム数値形式文字列
これらは、.NETFrameworkでサポートされているものと同じ数値形式指定子です。
その他の日付関数
T-SQLには、日付からパーツを抽出するのに役立つ他の関数も多数含まれています。これには、DAY()
などの関数が含まれます 、MONTH()
、YEAR()
、DATEPART()
、およびDATENAME()
。