Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

como converter todas as colunas de data e hora em um banco de dados expresso do sql server 2005 com dados para UTC


Supondo que você conheça o deslocamento entre o UTC e o fuso horário em que os dados estão armazenados, é bem simples:
DECLARE @offset INT;
SET @offset = <offset>;
UPDATE table SET col = DATEADD(HOUR, @offset, col);

Observe que pode ser negativo ou positivo, não tenho ideia de qual lado de Greenwich você está.

Claro que isso fica mais complicado se você estiver em um fuso horário que observa o horário de verão; neste caso, você pode precisar de uma solução mais ampla, como usar uma tabela de calendário. Isso é particularmente complexo se seus dados remontam a antes de George Bush alterar as regras do horário de verão americano, por exemplo. Eu tenho um artigo de muito tempo atrás que pode ser útil ; uma série mais recente está aqui:

Além disso, se algum dos seus dados cair nessa janela entre 00:00 e 02:00 em um dia de primavera/retrocesso, onde nunca tenho certeza se é certo alterá-lo porque é o dia da mudança ou não alterar porque é antes das 2 da manhã.