SQL Server 转换 ISO 8601 未按记录工作

标签 sql sql-server datetime

MSDN convert 应该使用 127 作为样式参数正确解析带有时区的 ISO 8601 日期。

The optional time zone indicator, Z, is used to make it easier to map XML datetime values that have time zone information to SQL Server datetime values that have no time zone. Z is the indicator for time zone UTC-0. Other time zones are indicated with HH:MM offset in the + or - direction. For example: 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)

有人对这个问题有解决方案或解决方法吗?

最佳答案

解决方法?:使用 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...

关于SQL Server 转换 ISO 8601 未按记录工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21621650/

相关文章:

Ruby on Rails 教程中的 SQL 插值

PHP 在日期之间搜索 SQL DB

sql-server - 在 SQL Server 中查询复杂的 JSON - 过滤对象数组

mysql - 基于用户 ID 的 SQL 数据库备份和恢复

java - 如何从日期时间字符串中拆分日期和时间?

SQL Server 可为空的数据类型大小

java - WEB-INF/context.xml 或 TOMCAT_HOME/conf/server.xml 下的 Tomcat 连接池?

sql - 如何创建仅获取表中已更新数据的查询

Python 拉皮条/猴子修补

java - 无法使用 Java 8 将给定的本地日期转换为 GMT 日期