SQL Server 函数

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