示例 2:格式化日期时间
我们可以将日期时间类型的变量格式化为不同的格式。
DECLARE @d DATETIME = CAST('2023-02-01 04:05:06' AS DATETIME);
SELECT
FORMAT(@d, format) -- replace format with what is shown in the table below.
|
Format |
Query |
2023 年 2 月 1 日 04:05:06 AM 的格式化示例 |
|
d |
|
2/1/2023 |
|
D |
|
Wednesday, February 1, 2023 |
|
f |
|
Wednesday, February 1, 2023 4:05 AM |
|
F |
|
Wednesday, February 1, 2023 4:05:06 AM |
|
g |
|
10/8/2022 6:01 AM |
|
G |
|
10/8/2022 6:01:06 AM |
|
O |
|
2022-10-08T06:01:06.117Z |
|
r |
|
Wed, 01 Feb 2023 04:05:06 GMT |
|
R |
|
Wed, 01 Feb 2023 04:05:06 GMT |
|
s |
|
2023-02-01T04:05:06 |
|
u |
|
2023-02-01 04:05:06Z |
|
U |
|
Wednesday, February 1, 2023 4:05:06 AM |
|
t |
|
4:05 AM |
|
T |
|
4:05:06 AM |
|
Y |
|
February 2023 |
|
MM_dd_yyyy |
|
02_01_2023 |
|
MMM-dd-yy |
|
Feb 01 23 |
|
yyyy-dd-MM |
|
2023-01-02 |
|
yyyy-dd-MM hh.mm |
|
2023-01-02 04.05 |
|
yyyy-dd-MM hh.mm.ss |
|
2023-01-02 04.05.06 |
|
yyyy-dd-MM hh.mm.ss tt |
|
2023-01-02 04.05.06 AM |
示例 3:格式化具备区域感知的日期
我们可以使用 culture 参数将日期格式化为不同语言。
DECLARE @d DATE = CAST('2023-02-01' AS DATE);
SELECT
FORMAT(@d, format, culture) -- replace format with what is shown in the table below.
|
Culture |
Query |
2023 年 2 月 1 日的格式化示例 |
|
美国英语(en-US) |
|
2/1/2023 |
|
|
Wednesday, February 1, 2023 12:00 AM | |
|
英国英语(en-gb) |
|
01/02/2023 |
|
|
01 February 2023 00:00 | |
|
德语(de-de) |
|
01.02.2023 |
|
|
Mittwoch, 1. Februar 2023 00:00 | |
|
中文(zh-cn) |
|
2023/2/1 |
|
|
2023年2月1日 0:00 | |
|
印地语(hi-in) |
|
01-02-0203 |
|
|
01 फरवरी 2023 00:00 | |
|
俄语(ru-ru) |
|
01-02-2023 |
|
|
1 февраля 2023 г. 0:00 | |
|
西班牙(gl-es) |
|
01/02/2023 |
|
|
mércores 01 febreiro 2023 00:00 |
示例 4:格式化货币
我们也可以方便地将数值格式化为各类货币。
SELECT
FORMAT(amount, 'c', culture) -- replace format with what is shown in the table below.
|
Culture |
Query |
格式化货币示例 |
|
美国英语(en-US) |
SELECT FORMAT(5.5, 'c', 'en-US') |
$5.5 |
|
英国英语(en-gb) |
SELECT FORMAT(@d, 'c', 'en-gb') |
£5.5 |
|
德语(de-de) |
SELECT FORMAT(@d, 'c', 'de-de') |
5,50 € |
|
中文(zh-cn) |
SELECT FORMAT(@d, 'c', 'zh-cn') |
¥5.50 |
|
印地语(hi-in) |
SELECT FORMAT(@d, 'c', ‘hi-in') |
₹5.50 |
|
俄语(ru-ru) |
SELECT FORMAT(@d, 'c', ru-ru') |
5,50 ₽ |
|
西班牙(gl-es) |
SELECT FORMAT(@d, 'c', 'gl-es') |
€5,50 |
技术要求
FORMAT() 可在 SQL Server(自 2012 起)和 Azure SQL Database 中使用。FORMAT() 也可在 PostgreSQL 中使用,但其行为不同。您可以在这门课程中了解更多。
另请参阅
进一步学习 SQL
结论
FORMAT() 值得学习,因为它能将 SQL 中一个常见的麻烦问题,变成一行即可解决。
但需要注意:这里展示的是 SQL Server 和 Azure SQL 的语法。PostgreSQL 也有自己的 FORMAT() 函数,但行为不同——在依赖这些模式之前,请先确认您的方言。
数据库的原始输出很少能直接用于报告。价格会以
1234.5的形式返回,而不是$1,234.50。日期会显示为2023-02-01 04:05:06,而您可能希望更易读一些。SQL 的
FORMAT()函数就很有用。它通过将数字和日期转换为格式化文本来工作,并且对不同货币或某些自定义模式提供了不错的支持。本教程将介绍其语法和四个常见用例。
什么是 FORMAT() 函数?
FORMAT()将数字或日期时间转换为文本,并按规则控制其显示方式。何时在 SQL 中使用 FORMAT()
FORMAT()适用于以特定格式显示日期、货币和数值。SQL FORMAT() 语法
参数
说明
Value
必填参数,指向要格式化的列
Format
必填参数,用于指定值的格式模式。应包含一个 .NET 格式字符串。我们将在下方示例中演示各种允许的格式
Culture
可选参数,用于指定日期/时间的区域感知格式。
FORMAT() 示例
示例 1:格式化数值变量
phone_number
0
11-222-3333