【问题标题】:SQL Server 2008 time zone conversionSQL Server 2008 时区转换
【发布时间】:2012-07-04 09:18:36
【问题描述】:

在我的网络应用程序中,所有日期值在传递到 SQL 数据库之前都转换为 UTC,然后在应用程序中显示时转换回本地时间。所以底线是数据库中的所有日期都是UTC。

在我开始报告开发之前,这一直很好。 Crystal Reports 没有能力(我可以检测到)进行时区转换,因此我需要在 SQL 中进行转换,然后再将值传递给报表。

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

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

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

【问题讨论】:

  • 在这里你会很快得到答案-->[serverfault.com]
  • Alex:感谢您的编辑。现在更容易阅读。 :)

标签: sql-server-2008 timezone utc


【解决方案1】:

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

【讨论】:

  • 酷。您可以勾选这个作为答案。
猜你喜欢
  • 1970-01-01
  • 2016-04-11
  • 1970-01-01
  • 1970-01-01
  • 2018-05-03
  • 2019-08-01
  • 2010-11-13
  • 2015-11-14
相关资源
最近更新 更多