我的数据库以GM格式保存在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
我不完全确定它是否可能。有什么意见吗?
答案 0 :(得分:1)
听起来您实际上希望将存储在数据库中的UTC时间转换为具有正确偏移量(-5或-4)的本地日期/时间。
在SQL Server中没有好办法。 至少,还没有。
我能提供的最好建议是不要在数据库中进行转换。相反,将UTC值原样传递回应用程序代码,并在那里进行转换。
例如,如果您的应用程序是用.NET编写的,则可以使用TimeZoneInfo
或Noda Time来处理转换到您希望的任何时区。如果你正在使用别的东西,请告诉我,我会更新问题。