在我的 Web 应用程序中,所有日期值在传递到 SQL 数据库之前都转换为 UTC,然后在应用程序中显示时转换回本地时间。所以底线是数据库中的所有日期都是UTC。
在我开始报告开发之前,这一切都很好。 Crystal Reports 无法(我可以检测到)进行时区转换,因此我需要在将值传递给报告之前在 SQL 中进行转换。
SQL Server 转换日期时间值的能力似乎更为有限。我看到的唯一功能是 SWITCHOFFSET。此功能的问题在于它不知道夏令时,这似乎是一个主要缺陷。在 asp.net 中,我可以传递一个带有时区的日期时间值,它会自动将其转换为 UTC 时间,考虑到任何需要的夏令时调整。
虽然在 SQL 中,而不是说类似的话
SWITCHOFFSET (SomeDate,"Eastern Time"),
我现在不得不说
SWITCHOFFSET(SomeDate, "-4:00").
但是,如果我从表中提取数据并要求获取 3 月份(夏令时开始的月份)的所有数据,会发生什么情况?无论如何,其中一些将是不正确的。我可以说 -4:00 或 -5:00,但显然不能同时说。
是否有其他一些功能可以对此进行调整,因为坦率地说,如果 SWITCHOFFSET 不知道如何进行夏令时转换,它似乎是半成品。
最佳答案
我能想到的唯一方法是:
最后但并非最不重要的是,您可以尝试摆脱 SQL Access 并使用 OData API,但这是一些工作。
无论如何, View 可以使用您编程的方法来转换时间。
关于sql-server - SQL Server 2008 时区转换,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11327421/