我所有的时间都在UTC时区,现在我需要以某种方式将其转换为用户时区(我也将其存储在数据库中,并使用Windows时区的ID)。
如何在SQL Server 2005中做到这一点?
编辑
所以我试图做那个扩展的存储过程,但是用Timezoneinfo我得到了这个错误
部署错误SQL01268:.Net SqlClient数据提供程序:消息6503,级别16,状态12,行1程序集’system.core,version = 3.5.0.0,culture = neutral,publickeytoken = b77a5c561934e089。’ 在SQL目录中找不到。执行批处理时发生错误。
如果我把那条线拿出来,我可以部署它。任何想法如何解决这个问题?
由于SQL Server对此不提供开箱即用的支持,因此您可以考虑编写一个使用.Net TimeZoneInfo对象的.Net dll存储过程,该对象考虑了包括DST在内的所有规则。此类允许您将时间也从一个区域转换为另一个区域。我希望这有帮助。
DateTime hwTime = new DateTime(2007, 02, 01, 08, 00, 00); try { TimeZoneInfo hwZone = TimeZoneInfo.FindSystemTimeZoneById("Hawaiian Standard Time"); Console.WriteLine("{0} {1} is {2} local time.", hwTime, hwZone.IsDaylightSavingTime(hwTime) ? hwZone.DaylightName : hwZone.StandardName, TimeZoneInfo.ConvertTime(hwTime, hwZone, TimeZoneInfo.Local)); } catch (TimeZoneNotFoundException) { Console.WriteLine("The registry does not define the Hawaiian Standard Time zone."); } catch (InvalidTimeZoneException) { Console.WriteLine("Registry data on the Hawaiian STandard Time zone has been corrupted."); }