Microsoft introducerade CURRENT_TIMEZONE()
funktion i SQL Server 2019 för att returnera serverns tidszon.
Mer specifikt, den här funktionen "returnerar namnet på den tidszon som observerats av en server eller en instans".
Exempel
Här är ett exempel att visa.
SELECT CURRENT_TIMEZONE();
Resultat:
(UTC) Coordinated Universal Time
I det här fallet är tidszonen för min instans av SQL Server UTC.
Jag kan se detta när jag kör funktioner som SYSDATETIMEOFFSET()
.
SELECT SYSDATETIMEOFFSET();
Resultat:
2020-04-01 00:14:44.0470785 +00:00
UTC har en tidszonförskjutning på +00:00 (ingen förskjutning), och detta återspeglas när jag returnerar systemets datum och tid.
Tidigare versioner av SQL Server
Om jag kör CURRENT_TIMEZONE()
mot min SQL Server 2017-instans, det här är vad jag får.
SELECT CURRENT_TIMEZONE();
Resultat:
Msg 195, Level 15, State 10, Line 1 'CURRENT_TIMEZONE' is not a recognized built-in function name.
Jag laddade till och med ner den senaste Docker-behållaren med SQL Server 2017 för Linux för att kontrollera detta, men jag får fortfarande det här felet.
Jag har också kontrollerat andra SQL Server 2017-installationer men med samma resultat.
I kommentarsavsnittet i sin onlinedokumentation för den här funktionen har Microsoft insinuerat att CURRENT_TIMEZONE()
kommer att porteras till tidigare versioner av SQL Server, men detta verkar inte ha hänt när detta skrivs.
Under tiden kan du prova följande kod.
DECLARE @TimeZone VARCHAR(50)
EXEC MASTER.dbo.xp_regread 'HKEY_LOCAL_MACHINE',
'SYSTEM\CurrentControlSet\Control\TimeZoneInformation',
'TimeZoneKeyName',@TimeZone OUT
SELECT @TimeZone
Resultat:
UTC
Jag körde det på samma instans av SQL Server 2017 som inte stöder CURRENT_TIMEZONE()
, och det fungerade bra.
Uppenbarligen kommer ditt resultat att bero på var din server är placerad (eller åtminstone vilken tidszon den har konfigurerats för). Det här är vad jag får om jag kör det här uttalandet på en annan server:
W. Europe Standard Time
SQL Server har också en systemvy som gör att du kan returnera en lista över tidszoner som stöds, som du kan använda för att krysskontrollera dina resultat här.