欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

SQL Server 中日期时间格式转换的规则与指南

最编程 2024-08-04 16:10:07
...

日期和时间样式

对于日期或时间数据类型的 expression,style 可以具有下表所示的某个值。 其他值作为 0 进行处理。 从 SQL Server 2012 (11.x) 开始,在从日期和时间类型转换为 datetimeoffset 时支持的唯一样式是 0 或 1。 所有其他转换样式均返回错误 9809。

注意

SQL Server 使用科威特算法来支持阿拉伯样式的日期格式。

不带世纪数位 (yy) (1) 带世纪数位 (yyyy) Standard 输入/输出 (3)
- 0 或 100 (1,2) datetime 和 smalldatetime 的默认值 mon dd yyyy hh:miAM(或 PM)
1 101 美国 1 = mm/dd/yy
101 = mm/dd/yyyy
2 102 ANSI 2 = yy.mm.dd
102 = yyyy.mm.dd
3 103 英国/法国 3 = dd/mm/yy
103 = dd/mm/yyyy
4 104 德语 4 = dd.mm.yy
104 = dd.mm.yyyy
5 105 意大利语 5 = dd-mm-yy
105 = dd-mm-yyyy
6 106(1) - 6 = dd mon yy
106 = dd mon yyyy
7 107(1) - 7 = Mon dd, yy
107 = Mon dd, yyyy
8 或 24 108 - hh:mi:ss
- 9 或 109 (1,2) 默认格式 + 毫秒 mon dd yyyy hh:mi:ss:mmmAM(或 PM)
10 110 USA 10 = mm-dd-yy
110 = mm-dd-yyyy
11 111 日本 11 = yy/mm/dd
111 = yyyy/mm/dd
12 112 ISO 12 = yymmdd
112 = yyyymmdd
- 13 或 113 (1,2) 欧洲默认格式 + 毫秒 dd mon yyyy hh:mi:ss:mmm(24 小时制)
14 114 - hh:mi:ss:mmm(24 小时制)
- 20 或 120 (2) ODBC 规范 yyyy-mm-dd hh:mi:ss(24 小时制)
- 21、25 或 121 (2) time、date、datetime2 和 datetimeoffset 的 ODBC 规范(带毫秒)默认值 yyyy-mm-dd hh:mi:ss.mmm(24 小时制)
22 - 美国 mm/dd/yy hh:mi:ss AM(或 PM)
- 23 ISO8601 yyyy-mm-dd
- 126 (4) ISO8601 yyyy-mm-ddThh:mi:ss.mmm(无空格)

注意: 毫秒 (mmm) 值为 0 时,不会显示毫秒小数部分的值。 例如,值“2012-11-07T18:26:20.000”显示为“2012-11-07T18:26:20”。
- 127(6, 7) 带时区 Z 的 ISO8601。 yyyy-MM-ddThh:mm:ss.fffZ(不带空格)

注意: 毫秒 (mmm) 值为 0 时,不会显示毫秒小数值。 例如,值“2012-11-07T18:26:20.000”显示为“2012-11-07T18:26:20”。
- 130 (1,2) 回历 (5) dd mon yyyy hh:mi:ss:mmmAM

在此样式中,mon 表示完整月份名称的多标记回历 unicode 表示形式。 该值在 SSMS 的默认 US 安装中不会正确呈现。
- 131 (2) 回历 (5) dd/mm/yyyy hh:mi:ss:mmmAM

1 这些样式值返回不确定的结果。 包括所有 (yy)(不带世纪数位)样式和一部分 (yyyy)(带世纪数位)样式。

2 默认值(0 或 100、9 或 109、13 或 113、20 或 120,23,以及 21、25 或 121)始终返回世纪位数 (yyyy) 。

3 转换为 datetime 时输入;转换为字符数据时输出。

4 为用于 XML 而设计。 对于从 datetime 或 smalldatetime 到字符数据的转换,请参阅上一个表,查看输出格式 。

5 回历是有多种变体的日历系统。 SQL Server 使用科威特算法。

重要

默认情况下,SQL Server 基于截止年份 2049 年来解释两位数的年份。 这意味着 SQL Server 将两位数年份 49 解释为 2049 年,将两位数年份 50 解释为 1950 年。 许多客户端应用程序(包括基于自动化对象的应用程序)都使用截止年份 2030 年。 SQL Server 提供两位数年份截止配置选项来更改 SQL Server 所使用的截止年份。 这允许对日期进行一致处理。 建议您指定四位数年份。

6 仅在从字符数据强制转换到 datetime 或 smalldatetime 时提供支持 。 仅表示日期或时间成分的字符数据强制转换为 datetime 或 smalldatetime 数据类型时,未指定的时间成分设置为 00:00:00.000,未指定的日期成分设置为 1900-01-01 。

7 使用可选的时区指示符 Z,可更容易地将具有时区信息的 XML datetime 值映射到没有时区的 SQL Server datetime 值 。 Z 指示时区 UTC-0。 \+ 或 - 方向的 HH:MM 偏移量则指示其他时区。 例如:2006-12-12T23:45:12-08:00

将 smalldatetime 转换为字符数据时,包含秒或毫秒的样式将在这些位置上显示零。 从 datetime 或 smalldatetime 值转换时,可以使用合适的 char 或 varchar 数据类型长度截断不需要的日期部分 。

使用包含时间的样式将字符数据转换为 datetimeoffset 时,将在结果末尾追加时区偏移量。

 参考:https://docs.microsoft.com/zh-cn/sql/t-sql/functions/cast-and-convert-transact-sql?view=sql-server-ver15

原文地址:https://www.cnblogs.com/ldc218/p/16379728.html