问题描述
在我的“示例”表中,我有一个 nvarchar 的“日期”列,我想将其转换为 ISO 8601 datetime2
格式。
我现在的日期格式如下:
01-JAN-20 12.00.00.0000000AM
将其转换为 ISO 8601 datetime2
格式的代码是什么?
解决方法
ISO 8601 是日期/时间值的字符串格式规范,而 datetime2
是内部二进制值。
要将 dd-mon-yy 格式的日期字符串转换为 datetime2
值,然后将该值格式化为 ISO 8601 日期/时间字符串,您可以使用:
FORMAT(CAST('01-JAN-20' AS datetime2),'yyyy-MM-ddTHH:mm:ss.ffffff').
请注意,2 位数年份不明确,将根据实例 2-digit year cut-off configuration 进行解释。
,SQL Server 在没有格式的转换方面非常聪明。以下似乎有效:
select convert(datetime2,left('01-JAN-20 12.00.00.0000000AM',9))
注意:这将值置于午夜,因为您将值描述为“日期”,我认为它没有时间分量。