如何更改DateCreated列的时区?

时间:2010-09-02 00:45:06

标签: sql sql-server tsql sql-server-2008

数据库驻留在SQL Server 2008中......

我有一个位于不同国家/地区的数据库,我希望表DateCreated和DateUpdated具有例如日期和时间加拿大/ ON /多伦多时区而不是 数据库所在的美国时区。

DateCreated的默认值为GetDate(),DateUpdated具有以下触发器:

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

1 个答案:

答案 0 :(得分:1)

要将datetime从一个时区转换为另一个时区,请添加(目标时区位于当前时区以东)或减去(向西)两个区域之间的小时数差异。例如,如果数据库位于加利福尼亚州(太平洋时间),请添加三个小时以获取多伦多时间(东部时间)。无需调整DST,因为两个时区都会观察它。

如上所述,您应该考虑将所有时间转换为UTC并调整应用程序以将时间转换为本地时间。然后,无论数据库在何处,您的数据库都将具有正确的时间。