使用 FORMAT 格式化日期时间

Version >= SQL Server 2012

你可以使用新功能: FORMAT()

使用此功能,你可以将 DATETIME 字段转换为你自己的自定义 VARCHAR 格式。

DECLARE @Date DATETIME = '2016-09-05 00:01:02.333'

SELECT FORMAT(@Date, N'dddd, MMMM dd, yyyy hh:mm:ss tt')

2016 年 9 月 5 日星期一 12:01:02 AM

参数

鉴于 DATETIME 的格式是 2016-09-05 00:01:02.333,下面的图表显示了它们对提供的参数的输出。

争论 输出
YYYY 2016
YY 16
MMMM 九月
MM 09
M 9
DDDD 星期一
DDD 周一
DD 05
d
HH 00
H 0
HH 12
H 12
毫米 01
1
SS 02
小号 2
TT 上午
Ť 一个
FFF 333
FF 33
F 3

你还可以为 FORMAT() 函数提供单个参数,以生成预格式化的输出:

DECLARE @Date DATETIME = '2016-09-05 00:01:02.333'

SELECT FORMAT(@Date, N'U')

2016 年 9 月 5 日星期一上午 4:01:02

单个参数 输出
d 2016 年 9 月 5 日星期一
d 2016 年 9 月 5 日
F 2016 年 9 月 5 日星期一 12:01:02 AM
F 2016 年 9 月 5 日星期一 12:01 AM
G 9/5/2016 12:01:02 AM
G 9/5/2016 12:01 AM
M 05 年 9 月
Ø 2016-09-05T00:01:02.3330000
[R 周一,2016 年 9 月 5 日 00:01:02 GMT
小号 2016-09-05T00:01:02
Ť 上午 12:01:02
Ť 上午 12:01
U 2016 年 9 月 5 日星期一上午 4:01:02
U 2016-09-05 00:01:02Z
ÿ 2016 年 9 月

注意:以上列表使用的是 en-US 文化。可以通过第三个参数为 FORMAT() 指定不同的文化:

DECLARE @Date DATETIME = '2016-09-05 00:01:02.333'

SELECT FORMAT(@Date, N'U', 'zh-cn')

2016 年 9 月 5 日 4:01:02