A Microsoft introduziu o
CURRENT_TIMEZONE()
função no SQL Server 2019 para retornar o fuso horário do servidor. Mais especificamente, esta função “retorna o nome do fuso horário observado por um servidor ou uma instância”.
Exemplo
Aqui está um exemplo para demonstrar.
SELECT CURRENT_TIMEZONE();
Resultado:
(UTC) Coordinated Universal Time
Nesse caso, o fuso horário da minha instância do SQL Server é UTC.
Eu posso ver isso quando executo funções como
SYSDATETIMEOFFSET()
. SELECT SYSDATETIMEOFFSET();
Resultado:
2020-04-01 00:14:44.0470785 +00:00
O UTC tem um deslocamento de fuso horário de +00:00 (sem deslocamento), e isso é refletido quando eu retorno a data e a hora do sistema.
Versões anteriores do SQL Server
Se eu executar
CURRENT_TIMEZONE()
contra minha instância do SQL Server 2017, aqui está o que recebo. SELECT CURRENT_TIMEZONE();
Resultado:
Msg 195, Level 15, State 10, Line 1 'CURRENT_TIMEZONE' is not a recognized built-in function name.
Eu até baixei o contêiner do Docker mais recente com o SQL Server 2017 para Linux para verificar isso, mas ainda recebo esse erro.
Também verifiquei outras instalações do SQL Server 2017, mas com o mesmo resultado.
Na seção de comentários de sua documentação online para esta função, a Microsoft insinuou que
CURRENT_TIMEZONE()
será portado para versões anteriores do SQL Server, mas isso não parece ter acontecido até o momento. Enquanto isso, você pode tentar o seguinte código.
DECLARE @TimeZone VARCHAR(50)
EXEC MASTER.dbo.xp_regread 'HKEY_LOCAL_MACHINE',
'SYSTEM\CurrentControlSet\Control\TimeZoneInformation',
'TimeZoneKeyName',@TimeZone OUT
SELECT @TimeZone
Resultado:
UTC
Eu executei isso na mesma instância do SQL Server 2017 que não suporta
CURRENT_TIMEZONE()
, e funcionou muito bem. Obviamente, seu resultado dependerá de onde seu servidor está localizado (ou pelo menos, para qual fuso horário ele foi configurado). Aqui está o que eu recebo se eu executar esta instrução em outro servidor:
W. Europe Standard Time
O SQL Server também tem uma exibição do sistema que permite retornar uma lista de fusos horários com suporte, que você pode usar para verificar seus resultados aqui.