.NET TimeZoneInfo类很棒,我认为它会回答我在SQL 2005数据库中记录来自多个时区的数据时遇到的所有问题。从SQL 2005服务器访问TimeZoneInfo
要将数据库中的UTC日期时间转换为任何其他时区,我只需使用TimeZoneInfo.FindSystemTimeZoneById()将时区带入TimeZoneInfo类,然后调用TimeZoneInfo.ConvertTimeFromUtc()。辉煌!我只是从SQL .NET CLR调用它!
但是... TimeZoneInfo具有MayLeakOnAbort的主机保护属性。
当我使用VS 2008创建一个SQL函数或存储过程时,我甚至无法看到system.TimeZoneInfo类永远不会使用它。我假设即使我能以某种方式引用TimeZoneInfo类,如果我尝试在SQL Sever 2005中注册程序集,我可能会遇到某种安全异常。
帮助!有没有办法从SQL Server 2005中访问TimeZoneInfo类及其所有的财富?
注:我刚加入这个警告的第一个答案后:
我们在全球不同地点的网站。我们需要将本地时间和UTC时间存储在数据库中,以针对可能需要在站点级别进行趋势分析的事件。一年的趋势可能包含超过52,000个数据点,因此,为了提高效率,我不能在数据库中存储UTC的时间并转换客户端上的每个数据点。因此,我需要在数据库中将任何时区的本地时间转换为UTC时间和从UTC时间转换的能力。
你实际存储在数据库中的是什么?您是否存储了这样的事实,即该数据是在'法国下午3点'录制的,或者您是否存储了在UTC时间下午2点录制的事实?如果是前者,则可以将本地时间偏移量存储在另一列中 – 2009-03-05 16:12:02
我需要记录UTC和本地时间。网站报告通常需要在本地时间,全球范围的报告将以UTC时间请求。无论如何,我仍然需要在数据库级别确定本地偏移量或时间是什么!输入用户可能在任何时区。 – user74207 2009-03-05 23:57:45