gpt4 book ai didi

sql-server - SQL Server 2008 时区转换

转载 作者:行者123 更新时间:2023-12-01 05:30:44 25 4
gpt4 key购买 nike

在我的 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 不知道如何进行夏令时转换,它似乎还没有完成。

最佳答案

我能想到的唯一方法是:

  • 使用 C# 集成为此创建一个方法;) 谢天谢地,您可以回到那个。
  • 使用 VIEWS 对它们运行报告。无论如何,始终是一个好主意,因为它将报告(在您的直接控制之外)与数据库模式分离,这是一个实现细节。我通常有一个报告架构,其中包含作为另一个文档化 API 的所有报告 View 。

  • 最后但并非最不重要的是,您可以尝试摆脱 SQL Access 并使用 OData API,但这是一些工作。

    无论如何, View 可以使用您编程的方法来转换时间。

    关于sql-server - SQL Server 2008 时区转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11327421/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com