SQL 書式文字列関数は、指定された値を指定された形式でフォーマットするために使用されます。 SQL Server Format Functionのシンタックスは以下の通りです
Format(Value, Format, Culture)
- Value: データ型をサポートする有効な式を指定してください。
- フォーマット。
- Format: 有効な.NET Framework形式の文字列を指定してください。
- Culture:
SQL Format Date Example
この文字列関数の例では、まずDatetime変数を宣言し、それにGETDATE()を割り当てました。 ここでは、SQL Server Format 関数を使用して、日付をさまざまな形式で返すことにします。 この例で使用した文字列フォーマットについては、「Standard Date and Time Format Strings」の記事を参照することをお勧めします。
--Using FORMAT in SQL Server to Format DateDECLARE @Vardate DATETIME = GETDATE() SELECT FORMAT(@Vardate, 'd', 'en-US' ) AS 'Result 1', FORMAT(@Vardate, 'D', 'en-US' ) AS 'Result 2'SELECT FORMAT(@Vardate, 'f', 'en-US' ) AS 'Result 3', FORMAT(@Vardate, 'F', 'en-US' ) AS 'Result 4'SELECT FORMAT(@Vardate, 'g', 'en-US' ) AS 'Result 5', FORMAT(@Vardate, 'G', 'en-US' ) AS 'Result 6'SELECT FORMAT(@Vardate, 'm', 'en-US' ) AS 'Result 7', FORMAT(@Vardate, 'M', 'en-US' ) AS 'Result 8'SELECT FORMAT(@Vardate, 'O', 'en-US' ) AS 'Result 9', FORMAT(@Vardate, 'R', 'en-US' ) AS 'Result 10'SELECT FORMAT(@Vardate, 's', 'en-US' ) AS 'Result 11', FORMAT(@Vardate, 'S', 'en-US' ) AS 'Result 12'SELECT FORMAT(@Vardate, 't', 'en-US' ) AS 'Result 13', FORMAT(@Vardate, 'T', 'en-US' ) AS 'Result 14'SELECT FORMAT(@Vardate, 'u', 'en-US' ) AS 'Result 15', FORMAT(@Vardate, 'U', 'en-US' ) AS 'Result 16'SELECT FORMAT(@Vardate, 'Y', 'en-US' ) AS 'Result 17'
SQL Format Date using Culture
この例では、format関数の3番目の引数cultureを使用しています。 これにより、月名や日名を母国語で表示することができます。 例えば、日本語、中国語、ヒンディー語、ロシア語、韓国語での日付けなどです。
--Using FORMAT in SQL Server to Format Date (Culture) DECLARE @Vardate DATETIME = GETDATE() SELECT FORMAT(@Vardate, 'dd', 'en-US' ) AS 'Result 1', FORMAT(@Vardate, 'dddd', 'hi-IN' ) AS 'Result 2'SELECT FORMAT(@Vardate, 'd', 'de-DE' ) AS 'Result 3', FORMAT(@Vardate, 'dddd', 'ru-RU' ) AS 'Result 4'SELECT FORMAT(@Vardate, 'M', 'en-US' ) AS 'Result 5', FORMAT(@Vardate, 'MMMM', 'hi-IN' ) AS 'Result 6'SELECT FORMAT(@Vardate, 'MM', 'de-DE' ) AS 'Result 7', FORMAT(@Vardate, 'MMMM', 'ru-RU' ) AS 'Result 8'SELECT FORMAT(@Vardate, 'yy', 'en-US' ) AS 'Result 9', FORMAT(@Vardate, 'y', 'hi-IN' ) AS 'Result 10'SELECT FORMAT(@Vardate, 'yyyy', 'de-DE' ) AS 'Result 11', FORMAT(@Vardate, 'y', 'ru-RU' ) AS 'Result 12'
Custom Format Date
このSQL Format Dateのセクションでは、カスタムの日付・時刻フォーマットを定義します。 これにより、日付と時刻を表示するカスタムフォーマットを定義することができます。
--Using FORMAT in SQL Server to Format Date in Custom FormatDECLARE @Vardate DATETIME = GETDATE() SELECT FORMAT(@Vardate, 'dd/mm/yyyy') AS 'date in dd/mm/yyyy Format' SELECT FORMAT(@Vardate, 'dd/mm/yy') AS 'date in dd/mm/yy Format' SELECT FORMAT(@Vardate, 'd/m/yy') AS 'date in d/m/yy Format' SELECT FORMAT(@Vardate, 'mm/dd/yyyy') AS 'date in mm/dd/yyyy Format' SELECT FORMAT(@Vardate, 'MMMM dddd yyyy hh:mm:ss:mmmm') AS 'date in MMMM dddd yyyy hh:mm:ss:mmmm Format' SELECT FORMAT(@Vardate, 'MMMM yyyy, dddd hh:mm:ss:mmmm') AS 'date in MMMM yyyy, dddd hh:mm:ss:mmmm Format'
Format Currency using Culture
この例では、指定されたカルチャに基づいて、通貨の値をフォーマットします。
--Using FORMAT in SQL Server to Format Currency CultureDECLARE @Sales INT = 3325 SELECT FORMAT(@Sales, 'c', 'en-US' ) AS 'USA Currency'SELECT FORMAT(@Sales, 'c', 'ru-RU' ) AS 'Russian Currency'SELECT FORMAT(@Sales, 'c', 'hi-IN' ) AS 'Indian Currency'SELECT FORMAT(@Sales, 'c', 'de-DE' ) AS 'Indian Currency'
このFormat関数の例では、Format関数を使用してCurrencyをフォーマットします。 この方法を使えば、単純に「お金」や「値」の前に各国の通貨記号を表示することができます。
--Using FORMAT in SQL Server to Format Decimal Values in CurrencyDECLARE @Sales DECIMAL(8, 4) = 3325.2569 SELECT FORMAT(@Sales, 'c' ) AS 'Result 1'SELECT FORMAT(@Sales, 'c0' ) AS 'Result 2'SELECT FORMAT(@Sales, 'c1' ) AS 'Result 3'SELECT FORMAT(@Sales, 'c2' ) AS 'Result 4'SELECT FORMAT(@Sales, 'c3' ) AS 'Result 5'SELECT FORMAT(@Sales, 'c4' ) AS 'Result 6'
Sql Server Format Currency Decimals
この例では、このフォーマット関数を使って、Currencyの10進数の値をフォーマットします。
--Using FORMAT in SQL Server to Format Decimal Values in CurrencyDECLARE @Sales DECIMAL(8, 4) = 3325.2569 SELECT FORMAT(@Sales, 'c', 'en-US' ) AS 'Result 1'SELECT FORMAT(@Sales, 'c0', 'hi-IN' ) AS 'Result 2'SELECT FORMAT(@Sales, 'c1', 'ru-RU') AS 'Result 3'SELECT FORMAT(@Sales, 'c2', 'fr-FR' ) AS 'Result 4'SELECT FORMAT(@Sales, 'c3', 'de-DE') AS 'Result 5'SELECT FORMAT(@Sales, 'c4', 'zh-CN') AS 'Result 6'
Format Numbers using Culture
この例ではFORMAT関数を使用して数字をフォーマットします。 文化は数字のフォーマットを指定します。 つまり、100を区切る国もあれば、1000を区切る国もある、ということです。
--Using FORMAT in SQL Server to Format NumbersDECLARE @Number DECIMAL(11, 4) = 1453325.2569 SELECT FORMAT(@Number, 'N', 'en-US') AS 'Result 1'SELECT FORMAT(@Number, 'N', 'en-IN' ) AS 'Result 2'SELECT FORMAT(@Number, 'N', 'ru-RU') AS 'Result 3'SELECT FORMAT(@Number, 'N', 'fr-FR' ) AS 'Result 4'SELECT FORMAT(@Number, 'N', 'de-DE') AS 'Result 5'SELECT FORMAT(@Number, 'N', 'zh-CN') AS 'Result 6'
SQL Server Format Numbers
このFORMAT関数の例では、数字をフォーマットしてみます。 数字をフォーマットするには、#の記号を使います。
--Using FORMAT in SQL Server to Format NumbersDECLARE @Number DECIMAL(10,4) = 945354.1295 DECLARE @Num INT = 945332534 SELECT FORMAT(@Number, '#') AS 'Result 1'SELECT FORMAT(@Number, '#,###' ) AS 'Result 2'SELECT FORMAT(@Number, '#.00') AS 'Result 3'SELECT FORMAT(@Number, '#,###.000' ) AS 'Result 4'SELECT FORMAT(@Num, '###-##-####') AS 'Result 5'
となります。