将日期转换为 datetime2

问题描述

在我的“示例”表中,我有一个 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))

注意:这将值置于午夜,因为您将值描述为“日期”,我认为它没有时间分量。