SQL Server (Transact-SQL) FORMAT() 函数返回使用指定格式和可选区域性格式化的值。此函数通常用于将日期/时间和数值格式化为字符串的区域设置感知格式。对于一般数据类型转换,可以使用CAST() 或 CONVERT() 函数。
语法
FORMAT(value, format, culture)
参数
value | 必填。 指定要格式化的受支持数据类型的值。 |
format | 必需。 指定所需输出的格式。 |
culture | 可选。 指定文化。如果省略,则使用当前会话的语言。它接受 .NET Framework 支持的任何区域性作为参数。它不限于 SQL Server 明确支持的语言。如果区域性参数无效,则会引发错误。 |
返回值
返回使用指定格式格式化的值。
示例:设置小数、科学记数法和十六进制的格式
下面的示例演示如何使用不同位数的小数、科学记数法和十六进制。
--1位小数格式
SELECT FORMAT(12345.6789, 'N1', 'en-US');
Result: '12,345.7'
--2位小数格式
SELECT FORMAT(12345.6789, 'N2', 'en-US');
Result: '12,345.68'
--科学计数法
SELECT FORMAT(12345.6789, 'E2', 'en-US');
Result: '1.23E+004'
--十六进制
SELECT FORMAT(111, 'X', 'en-US');
Result: '6F'
示例:使用文化参数设置货币格式
下面的示例展示了如何使用此函数来处理不同国家的货币。
SELECT FORMAT(100,'C', 'en-US') [English US],
FORMAT(100,'C', 'fr-fr') [French France],
FORMAT(100,'C', 'ru-ru') [Russian Russian];
Result:
English US French France Russian Russian
----------- -------------- ----------------
$100.00 100,00 € 100,00 ₽
示例:使用文化参数设置日期格式
下面的示例演示如何使用此函数设置给定文化中的日期格式。
DECLARE @d DATE = '11/22/2020';
SELECT FORMAT( @d, 'd', 'en-US' ) [US English],
FORMAT( @d, 'd', 'en-gb' ) [Great Britain English],
FORMAT( @d, 'd', 'de-de' ) [German];
Result:
US English Great Britain English German
---------- --------------------- ----------
11/22/2020 22/11/2020 22.11.2020
在上面的示例中使用"D"作为格式参数将给出以下结果:
DECLARE @d DATE = '11/22/2020';
SELECT FORMAT( @d, 'D', 'en-US' ) [US English],
FORMAT( @d, 'D', 'en-gb' ) [Great Britain English],
FORMAT( @d, 'D', 'de-de' ) [German];
Result:
US English Great Britain English German
--------------------------- ---------------------- --------------------------
Sunday, November 22, 2020 22 November 2020 Sonntag, 22. November 2020