如何将包含时区的字符串转换为日期时间 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格式?
【问题讨论】:
你期待什么输出? 您要转换为datetime
或datetimeoffset
?
这在以下链接中得到了回答.. 请检查[在这里检查][1] [1]:***.com/questions/10300647/…
【参考方案1】:
SELECT CONVERT(DATETIME, '2014-03-01T10:30:04+0700', 126)
因Timezone
偏移而失败:
+0700
因此,您需要使用 LEFT
或 SUBSTRING
来删除它,例如:
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的主要内容,如果未能解决你的问题,请参考以下文章
如何将字符串转换为时间,使其具有时区意识,并在 Python 中转换时区?