如何将包含时区的字符串转换为日期时间 sql server

Posted

技术标签:

【中文标题】如何将包含时区的字符串转换为日期时间 sql server【英文标题】:How to convert string contain timezone to datetime sql server 【发布时间】:2014-09-09 04:17:11 【问题描述】:

我有包含日期​​时间值 2014-09-09T10:30:04+0700 的字符串,我想在 SQL Server 中转换为日期时间格式

以前我尝试过这个查询,但它不起作用

SELECT CONVERT(DATETIME, '2014-03-01T10:30:04+0700', 126)
CONVERT(datetimeoffset, '2014-03-01T10:30:04+0700', 127)

如何将字符串转换为sql server datetime格式?

【问题讨论】:

你期待什么输出? 您要转换为datetimedatetimeoffset 这在以下链接中得到了回答.. 请检查[在这里检查][1] [1]:***.com/questions/10300647/… 【参考方案1】:

SELECT CONVERT(DATETIME, '2014-03-01T10:30:04+0700', 126)Timezone 偏移而失败:

+0700

因此,您需要使用 LEFTSUBSTRING 来删除它,例如:

SELECT CONVERT(DATETIME, LEFT('2014-03-01T10:30:04+0700',19), 126)

CONVERT(datetimeoffset, '2014-03-01T10:30:04+0700', 127) 也失败了,因为您的Timezone 偏移量错误,即:

来自

+0700

应该是

+07:00

【讨论】:

这是唯一的出路【参考方案2】:

SQL Server 需要在 tz 偏移中使用冒号。你可以这样做:

CONVERT(DATETIMEOFFSET, LEFT('2014-03-01T10:30:04+0700',22) + ':00')

但您需要确保 tz 偏移量存在。如果为 00,偏移量应始终结束,但如果不是,您需要更聪明一点,并获取最后 2 位数字。

【讨论】:

以上是关于如何将包含时区的字符串转换为日期时间 sql server的主要内容,如果未能解决你的问题,请参考以下文章

如何将日期字符串转换为没有时区的日期对象

如何将日期/时间从 GMT 转换为本地时区

在雅典娜中将具有时区偏移的字符串转换为日期时间

如何将字符串转换为时间,使其具有时区意识,并在 Python 中转换时区?

将 ISO 8601 日期时间字符串转换为 **Date** 对象时,如何将日期时间重新定位到当前时区?

将iso日期格式的字符串转换为毫秒。 ISO日期格式包含(“ yyyy-MM-dd”),并且没有时区