.NET TimeZoneInfo类非常棒,我认为它可以解决我在SQL 2005数据库中记录来自多个时区的数据的所有问题.
要将数据库中的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时间并转换客户端上的每个数据点.因此,我需要能够在DB内将任何时区的本地时间转换为UTC时间和从UTC时间转换.