Microsoft wprowadził CURRENT_TIMEZONE()
funkcja w SQL Server 2019 do zwracania strefy czasowej serwera.
Dokładniej, ta funkcja „zwraca nazwę strefy czasowej obserwowanej przez serwer lub instancję”.
Przykład
Oto przykład do zademonstrowania.
SELECT CURRENT_TIMEZONE();
Wynik:
(UTC) Coordinated Universal Time
W tym przypadku strefa czasowa mojej instancji SQL Server to UTC.
Widzę to, gdy uruchamiam funkcje takie jak SYSDATETIMEOFFSET()
.
SELECT SYSDATETIMEOFFSET();
Wynik:
2020-04-01 00:14:44.0470785 +00:00
UTC ma przesunięcie strefy czasowej +00:00 (bez przesunięcia), co jest odzwierciedlane, gdy zwracam datę i godzinę systemową.
Wcześniejsze wersje SQL Server
Jeśli uruchomię CURRENT_TIMEZONE()
w stosunku do mojej instancji SQL Server 2017, oto co otrzymuję.
SELECT CURRENT_TIMEZONE();
Wynik:
Msg 195, Level 15, State 10, Line 1 'CURRENT_TIMEZONE' is not a recognized built-in function name.
Pobrałem nawet najnowszy kontener Docker z SQL Server 2017 dla systemu Linux, aby to sprawdzić, ale nadal pojawia się ten błąd.
Sprawdziłem również inne instalacje SQL Server 2017, ale z takim samym wynikiem.
W sekcji komentarzy dokumentacji online tej funkcji firma Microsoft zasugerowała, że CURRENT_TIMEZONE()
zostanie przeniesiony do wcześniejszych wersji SQL Server, ale wydaje się, że nie miało to miejsca w chwili pisania tego tekstu.
W międzyczasie możesz wypróbować następujący kod.
DECLARE @TimeZone VARCHAR(50)
EXEC MASTER.dbo.xp_regread 'HKEY_LOCAL_MACHINE',
'SYSTEM\CurrentControlSet\Control\TimeZoneInformation',
'TimeZoneKeyName',@TimeZone OUT
SELECT @TimeZone
Wynik:
UTC
Uruchomiłem to na tej samej instancji SQL Server 2017, która nie obsługuje CURRENT_TIMEZONE()
, i wszystko działało dobrze.
Oczywiście wynik będzie zależał od lokalizacji serwera (lub przynajmniej strefy czasowej, dla której został skonfigurowany). Oto, co otrzymam, jeśli uruchomię tę instrukcję na innym serwerze:
W. Europe Standard Time
SQL Server ma również widok systemowy, który umożliwia zwrócenie listy obsługiwanych stref czasowych, których można użyć do sprawdzenia wyników tutaj.