我覺得這應該很容易,但我沒有找到答案。下面的查詢將為我提供加利福尼亞的當前日期/時間,并將其表示為帶有時區偏移量的 UTC(當前為 -08:00):
select getdate() at time zone 'Pacific Standard Time'
我只想應用偏移量并獲取顯示當前本地時間的時間戳,然后洗掉偏移量。我覺得應該有一種方法可以實作這一點,而不必使用字串和日期函式來挑選它。例如,我想從
2021-11-24 18:03:41.190 -08:00
到
2021-11-24 10:03:41.190
有沒有簡潔的方法來做到這一點?
uj5u.com熱心網友回復:
當您使用不是aAT TIME ZONE的值時,假定該值位于您將其轉換到的時區。datetimeoffset
因此,您可以嵌套AT TIME ZONE子句。如果你這樣做了,我也建議使用SYSUTCDATE而不是GETDATE(它將本地時間回傳給主機,可以是任何時區)。
SELECT SYSUTCDATETIME() AT TIME ZONE 'UTC' AT TIME ZONE 'Pacific Standard Time';
雖然真的,只是SYSDATETIMEOFFSET用來開始; 那么您只需要一個,AT TIME ZONE因為 RDBMS 已經知道該值用于哪個時區。
SELECT SYSDATETIMEOFFSET() AT TIME ZONE 'Pacific Standard Time';
資料庫<>小提琴
uj5u.com熱心網友回復:
Declare @myDateTime datetime = '2021-11-24 21:35:25.984'; --UTC time
Select cast(@myDateTime At Time Zone 'UTC' At Time Zone 'Pacific Standard Time' As datetime);
或者 - 您可以只應用所需的偏移量并轉換回日期時間
Select cast(switchoffset(@myDateTime, '-08:00') As datetime)
使用 switchoffset 的問題是它不知道 DST,需要更改以使用不同的偏移值。如果您將上面的日期更改為 10 月 - PST 時間將為 14:35:25.983 但第二次計算仍回傳 13:35:25.983
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/366950.html
標籤:sql sql-server
上一篇:SQL查詢GROUPBY組
下一篇:FORXMLPATH只生成第一項
