2010-09-02 5 views
1

La base de données réside dans SQL Server 2008 ...Comment changer le fuseau horaire de la colonne DateCreated?

J'ai une base de données qui réside dans un pays différent, je veux que les tables DateCreated et DateUpdated aient Date et heure de par ex. Canada/ON/Toronto fuseau horaire au lieu du fuseau horaire des États-Unis où db est situé.

DateCreated a une valeur par défaut GetDate() et DateUpdated a le déclencheur suivant:

CREATE TRIGGER trigger_name ON table_name 
AFTER UPDATE 
AS 
BEGIN 
    UPDATE table_name 
    SET dateModified = GETDATE() 
    FROM table_name cm JOIN Inserted i 
    ON cm.companyid = i.companyid; 
END 
GO 
+0

Voulez-vous que les horaires ne soient pas mis à jour pour que vous n'ayez pas à vous soucier des fuseaux horaires? – LittleBobbyTables

Répondre

1

Pour convertir un datetime d'un fuseau horaire à l'autre, soit ajouter (fuseau horaire de destination est l'est de fuseau horaire) ou soustraire (vers l'ouest) le nombre d'heures de différence entre les deux zones. Par exemple, si la base de données réside en Californie (heure du Pacifique), ajoutez trois heures pour obtenir l'heure de Toronto (heure de l'Est). Pas besoin d'ajuster pour DST parce que les deux fuseaux horaires l'observent.

Vous devriez considérer, comme mentionné, convertir tout le temps en UTC et ajuster vos applications pour convertir les temps en heure locale. Ensuite, votre base de données aura les heures correctes, peu importe où il se trouve.