我正在撰寫函式以使用 At Time Zone SQL 函式根據時區值將時間戳轉換為本地時間戳。
源時間戳列具有 datetime2 資料型別和一個 value=2020-10-29 23:59:59.997000.
當我嘗試使用將其轉換為日期時間時
CAST(CAST(Timestamp AS DatetimeOffset) AT TIME ZONE 'Pacific Standard Time' AS DATETIME)
我知道value=2020-10-29 23:59:59.996667這是不正確的。
要添加的內容是日期時間。
uj5u.com熱心網友回復:
我相信我可能已經發現了你的問題。當您獲取 DATETIME2 時,將其轉換為 DATETIME,然后回傳 DATETIME2(6),您將得到結果:
查詢以證明您的問題
SELECT CAST(CAST('2020-10-29 23:59:59.997' AS DATETIME) AS DATETIME2(6))
--Returns 2020-10-29 23:59:59.996667
很難確定您需要什么,但看起來您正試圖以與原始資料相同的資料型別 DATETIME2(6) 獲取本地時間。AT TIME ZONE回傳 DATETIMEOFFSET,因此只需要在之后轉換回 DATETIME(假設您的原始資料是 UTC 時間)。請參閱下面的查詢
回傳沒有偏移資訊的本地時間
DECLARE @d2 DATETIME2(6) = '2020-10-29 23:59:59.997000'
SELECT CAST(@d2 AT TIME ZONE 'UTC' AT TIME ZONE 'Pacific Standard Time' AS DATETIME)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/460918.html
下一篇:如何通過撰寫處理剪切區域?
