在 SQL Server 中,日期格式的样式代码分为“带世纪”和“不带世纪”两种。其中,“带世纪”格式包含完整的年份(四位数年份,如 2024),而“不带世纪”格式通常包含年份的最后两位数(如 24)。

带世纪和不带世纪的日期格式代码

带世纪样式代码 带世纪格式 不带世纪样式代码 不带世纪格式
100 Mon DD YYYY hh:miAM (or PM) 0 Mon DD YY hh:miAM (or PM)
101 MM/DD/YYYY 1 MM/DD/YY
102 YYYY.MM.DD 2 YY.MM.DD
103 DD/MM/YYYY 3 DD/MM/YY
104 DD.MM.YYYY 4 DD.MM.YY
105 DD-MM-YYYY 5 DD-MM-YY
106 DD Mon YYYY 6 DD Mon YY
107 Mon DD, YYYY 7 Mon DD, YY
108 hh:mi:ss (仅时间,不含日期)
109 Mon DD YYYY hh:mi:ss:mmmAM (or PM) 9 Mon DD YY hh:mi:ss:mmmAM (or PM)
110 MM-DD-YYYY 10 MM-DD-YY
111 YYYY/MM/DD 11 YY/MM/DD
112 YYYYMMDD 12 YYMMDD

特殊的日期格式

一些格式代码只有“带世纪”的版本,没有不带世纪的对应格式。这些格式通常用在特定的日期格式需求中,例如 ISO 和 ODBC 标准:

样式代码 格式 说明
120 YYYY-MM-DD hh:mi:ss 标准日期时间格式
121 YYYY-MM-DD hh:mi:ss.mmm 标准日期时间格式,带毫秒
126 YYYY-MM-DDThh:mi:ss.mmm ISO8601 格式(常用于 XML)
127 YYYY-MM-DDThh:mi:ss:mmmZ ISO8601 带时区格式
130 DD Mon YYYY hh:mi:ss:mmmAM 阿拉伯日期格式(含时间和毫秒)
131 DD/MM/YYYY hh:mi:ss:mmmAM 阿拉伯日期格式(含时间和毫秒)

示例代码

以下示例展示如何使用带世纪和不带世纪的样式代码进行日期格式转换:

DECLARE @DateTime DATETIME = '2024-11-06 15:30:00.123';

SELECT 
    CONVERT(VARCHAR, @DateTime, 100) AS [Style 100],
    CONVERT(VARCHAR, @DateTime, 0) AS [Style 0],
    CONVERT(VARCHAR, @DateTime, 101) AS [Style 101],
    CONVERT(VARCHAR, @DateTime, 1) AS [Style 1],
    CONVERT(VARCHAR, @DateTime, 102) AS [Style 102],
    CONVERT(VARCHAR, @DateTime, 2) AS [Style 2],
    CONVERT(VARCHAR, @DateTime, 103) AS [Style 103],
    CONVERT(VARCHAR, @DateTime, 3) AS [Style 3],
    CONVERT(VARCHAR, @DateTime, 104) AS [Style 104],
    CONVERT(VARCHAR, @DateTime, 4) AS [Style 4],
    CONVERT(VARCHAR, @DateTime, 105) AS [Style 105],
    CONVERT(VARCHAR, @DateTime, 5) AS [Style 5],
    CONVERT(VARCHAR, @DateTime, 110) AS [Style 110],
    CONVERT(VARCHAR, @DateTime, 10) AS [Style 10],
    CONVERT(VARCHAR, @DateTime, 120) AS [Style 120],
    CONVERT(VARCHAR, @DateTime, 121) AS [Style 121],
    CONVERT(VARCHAR, @DateTime, 126) AS [Style 126];

以上表格和代码可以帮助你选择合适的样式代码来格式化日期时间数据。