SQL Server转换ISO 8601无法正常工作

时间:2014-02-07 07:22:02

标签: sql sql-server datetime

MSDN 转换应使用127作为样式参数,使用时区正确解析ISO 8601日期。

  

可选的时区指示符Z用于更轻松地将具有时区信息的XML日期时间值映射到没有时区的SQL Server日期时间值。 Z是时区UTC-0的指示符。其他时区用+或 - 方向的HH:MM偏移表示。例如:2006-12-12T23:45:12-08:00。

以下所有内容均为有效的ISO 8601日期,但在从字符串转换日期和/或时间时返回转换失败。

select convert(datetime, N'2014-02-07T13:51:00+07:00', 127)
select convert(datetime, N'2014-02-07T13:51:00+07', 127)
select convert(datetime, N'2006-12-12T23:45:12-08:00', 127)

任何人都有解决此问题的解决方案或解决方法吗?

2 个答案:

答案 0 :(得分:4)

解决方法?:使用datetimeoffset

select convert(datetimeoffset, N'2014-02-07T13:51:00+07:00', 127) --<-- This one works...
select convert(datetimeoffset, N'2014-02-07T13:51:00+07', 127)
select convert(datetimeoffset, N'2006-12-12T23:45:12-08:00') --<-- and this one works...

答案 1 :(得分:1)

使用datetimeoffset or datetime2代替datetime