我有一個日期時間值的字串表示,它有一個偏移量 03我假設這意味著 03 小時我很可能是錯誤的。
這是我表中的典型值:
2015-05-15 21:35:19 03
只有兩個唯一值 3,或者 2我不確定源系統是什么。
我想知道轉換這樣一個物件的正確方法是什么?我目前的方法是拆分偏移量并將剩余部分轉換為日期時間物件并使用 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|
--------------------------- ----------------------
uj5u.com熱心網友回復:
你得到了相反的偏移量,21:35:19 03 是 UTC 3,它代表 UTC 的 18:35:19。
話雖如此,您的字串表示決議得很好,datetimeoffset然后您可以將其轉換為 UTC:
SELECT PARSE('2015-05-15 21:35:19 03' AS datetimeoffset USING 'en-us') AT TIME ZONE 'UTC'
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/443782.html
