sql >> Database >  >> RDS >> Sqlserver

hoe alle datetime-kolommen in een SQL Server 2005 Express-database met gegevens naar UTC te converteren?

Ervan uitgaande dat u de offset kent tussen UTC en de tijdzone waarin de gegevens zijn opgeslagen, is het vrij eenvoudig:

DECLARE @offset INT;
SET @offset = <offset>;
UPDATE table SET col = DATEADD(HOUR, @offset, col);

Merk op dat dit negatief of positief kan zijn, ik heb geen idee aan welke kant van Greenwich jij bent.

Dit wordt natuurlijk ingewikkelder als u zich in een tijdzone bevindt die zomertijd in acht neemt; in dit geval heeft u mogelijk een uitgebreidere oplossing nodig, zoals het gebruik van een kalendertabel. Dit is met name ingewikkeld als uw gegevens teruggaan tot voordat George Bush bijvoorbeeld de Amerikaanse zomertijdregels wijzigde. Ik heb wel een artikel van lang geleden dat nuttig kan zijn ; een recentere serie is hier:

Ook als een van uw gegevens in dat venster valt tussen 00:00 uur en 02:00 uur op een lente-vooruit-/terugvaldag, waar ik nooit zeker weet of het juist is om het te wijzigen omdat het de wisseldag is of om niet te veranderen omdat het voor 2 uur 's nachts is.




  1. Is de tabelvolgorde van belang in mysql?

  2. PL/pgSQL-kolomnaam hetzelfde als variabele

  3. Vervolgkeuzelijst selecteren uit een databasetabel

  4. Langzame zoekopdracht op UNION ALL-weergave