我正在使用MS SQL服务器,我有一个类型为text的日期字段。存储在那里的日期采用这种格式
2017-03-01T18:23:02 + 0700
我正在尝试在datetime字段中转换此字段但我失败了。我试过了
CONVERT(datetimeoffset,date, 127)
CONVERT(datetime,date, 127)
CONVERT(datetime2,date, 127)
但我一直在
从字符转换日期和/或时间时转换失败 字符串。
我认为问题在于,根据ISO8601,时间偏移必须采用hh:mm格式,而我的是hhmm。如果它更容易,我不介意只保留日期(yyyy-mm-dd)。
我已经阅读了类似的问题,但没有一个与我的情况完全匹配,我无法找出解决方案。
答案 0 :(得分:2)
试试这个
Declare @dt varchar(50)
set @dt = '2017-03-01T18:23:02+0700'
select convert(datetime, replace(LEFT(@dt, LEN(@dt) - 1), '+', '.'), 126)
答案 1 :(得分:0)
如果您只需要日期部分,那么您可以使用以下查询
SELECT CAST(LEFT('2017-03-01T18:23:02+0700',10) as DATE)
答案 2 :(得分:0)
使用以下查询转换日期时间:
SELECT CONVERT(DATETIME,REPLACE(REPLACE('2017-03-01T18:23:02+070','T','
'),'+','.'),103)
对于DATE,仅使用以下查询:
SELECT CONVERT(DATE,REPLACE(REPLACE('2017-03-01T18:23:02+010','T','
'),'+','.'),102)
答案 3 :(得分:0)
它似乎不会以两种方式工作(都会引发错误):
SELECT CONVERT(datetime,'2017-03-01T18:23:02+0700',127)
SELECT CONVERT(datetime,'2017-03-01T18:23:02+07:00',127)
似乎只能将Z指定为时区:
SELECT CONVERT(datetime,'2017-03-01T18:23:02Z',127)