Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

comment convertir toutes les colonnes datetime dans une base de données sql server 2005 express avec des données en UTC

En supposant que vous connaissiez le décalage entre UTC et le fuseau horaire dans lequel les données sont stockées, c'est assez simple :

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

Notez que cela peut être négatif ou positif, je n'ai aucune idée de quel côté de Greenwich vous êtes.

Bien sûr, cela devient plus compliqué si vous êtes dans un fuseau horaire qui observe l'heure d'été; dans ce cas, vous aurez peut-être besoin d'une solution plus étendue, telle que l'utilisation d'un tableau de calendrier. Ceci est particulièrement complexe si vos données remontent avant que George Bush ne modifie les règles américaines de l'heure d'été, par exemple. J'ai un article d'il y a longtemps qui peut être utile ; une série plus récente est ici :

De plus, si l'une de vos données tombe dans cette fenêtre entre 00h00 et 2h00 un jour d'avance/retombée de printemps, où je ne sais jamais s'il est juste de la changer parce que c'est le jour du changement ou de ne pas changer parce qu'il est avant 2h du matin.