.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 格式存储时间并转换客户端上的每个数据点。因此,我需要能够在数据库中将任何时区的本地时间与 UTC 时间相互转换。