我有一个日期时间值的字符串表示,它有一个偏移量
+03
我假设这意味着+03小时,我很可能是错的。
这是我表格中的一个典型值:
2015-05-15 21:35:19+03
只有两个唯一的值
+3
或
+2
我不确定源系统是什么。
我想知道转换这种物体的正确方法是什么?我当前的方法是拆分偏移量,并将剩余部分转换为datetime对象,然后使用dateadd添加偏移量
SELECT DATEADD(hour, CAST(value AS int)
, CAST(REPLACE(dt, '+' + value, '') AS DATETIME2)) AS offset_val
, dt
FROM (
VALUES ('2015-05-15 21:35:19+03')
, ('2015-05-15 19:35:19+03')
) t(dt)
CROSS APPLY (
SELECT VALUE
, ROW_NUMBER() OVER (ORDER BY VALUE) AS seq
FROM STRING_SPLIT(t.dt, '+')
) ch
WHERE
seq = 1
+---------------------------+----------------------+
|offset_val |dt |
+---------------------------+----------------------+
|2015-05-16 00:35:19.0000000|2015-05-15 21:35:19+03|
|2015-05-15 22:35:19.0000000|2015-05-15 19:35:19+03|
+---------------------------+----------------------+