2

我的数据库以 int 格式保存在 GMT 时区的日期值。我正在尝试将日期转换为本地时区,但是当日期是过去的日期时会出现问题,例如,在我的情况下,2012 年 12 月 1 日的偏移量将是 -5,2010 年 6 月 15 日的偏移量将是 -4 到期到夏令时。我目前在美国东部时间。

所以我需要知道前一个日期的 UTC 日期是什么,以便能够确定 -4 还是 -5 将是该日期的偏移量。

SELECT Test_Number,
Last_Test_Date, dateAdd(hour, 
        datediff(hour, GETUTCDATE(), getdate()), --UTC offset
        dateadd(second, Last_Test_Date, '1/1/1970 12:00 AM'))
FROM TestTable

我不完全确定这是否可能。有什么意见吗?

4

1 回答 1

1

听起来您实际上希望将存储在数据库中的 UTC 时间转换为具有正确偏移量(-5 或 -4)的本地日期/时间。

在 SQL Server 中没有很好的方法来做到这一点。 至少,现在还没有。

我能提供的最好建议是不要在数据库中进行转换。相反,将 UTC 值按原样传递回您的应用程序代码,并在那里进行转换。

例如,如果您的应用程序是用 .NET 编写的,您可以使用TimeZoneInfoNoda Time来处理到您希望的任何时区的转换。如果您正在使用其他东西,请告诉我,我会更新问题。

于 2013-11-15T01:22:31.227 回答