【问题标题】:How to convert string contain timezone to datetime sql server如何将包含时区的字符串转换为日期时间 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格式?

【问题讨论】:

标签: sql-server datetime-format


【解决方案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 位数字。

【讨论】:

    猜你喜欢
    • 2021-06-26
    • 1970-01-01
    • 2021-08-24
    • 1970-01-01
    • 2019-08-31
    相关资源
    最近更新 更多