Por favor veja o código abaixo:
DECLARE @UKDateTime as DateTime
SELECT @UKDateTime = GETDATE() AT TIME ZONE 'GMT Standard Time'
print @UKDateTime
PRINT GETDATE()
Isso retorna:
Oct 4 2021 4:03PM
Oct 4 2021 4:03PM
A hora no Reino Unido é atualmente: 17h03 (conforme confirmado pelo relógio do meu PC). Parece estar retornando a data UTC. Qual é o problema?
Eu tenho a configuração do SQL Server como um contêiner do Docker. É o SQL Server v18.4.
A documentação para AT TIME ZONE diz:
Você está usando GETDATE, que retorna um datetime sem nenhuma informação de deslocamento, então a função assume que já é um horário no fuso horário de destino.
Se você deseja converter a data e hora do servidor local para GMT, você pode usar:
Ou, por exemplo, se o fuso horário do seu servidor local for 'Eastern Standard Time':