SQL Server 2008 时区转换



在我的 Web 应用中,所有日期值在传递到 SQL 数据库之前都会转换为 UTC,然后在应用中显示时转换回本地时间。因此,底线是数据库中的所有日期都采用UTC。

在我开始报告开发之前,这工作得很好。水晶报告没有能力(我可以检测到)进行时区转换,所以我需要在将值传递给报告之前在SQL中进行转换。

SQL Server 转换日期时间值的能力似乎要有限得多。我看到的唯一功能是 SWITCHOFFSET .此功能的问题在于它不是夏令时感知的,这似乎是一个主要缺陷。 在 asp.net 中,我可以传递带有时区的日期时间值,它会自动将其转换为 UTC 时间,同时考虑任何需要的夏令时调整。

不过在SQL中,与其说SWITCHOFFSET (SomeDate,"Eastern Time")之类的话,
我现在不得不说SWITCHOFFSET(SomeDate, "-4:00"). 但是,如果我从表中提取数据并要求提供 3 月(夏令时开始的月份)的所有数据,会发生什么情况?无论如何,其中一些都是不正确的。 我可以说 -4:00 或 -5:00,但显然,不能两者兼而有之。

是否有其他功能可以为此进行调整,因为坦率地说,如果它不知道如何进行夏令时转换SWITCHOFFSET似乎已经半生不熟了。

我发现Crystal Reports有一个ShiftDateTime函数,它将检测用户的本地时区,然后从UTC转换日期。 这取决于用户是否正确设置了时区,我认为在大多数人的计算机上正确设置了 98%。

相关内容

  • 没有找到相关文章

最新更新