4

我正在移植现有应用程序以在 Windows Azure 上运行。我们当前的解决方案在很大程度上依赖于 Windows 在 SQL Server 上设置的时区。我们GETDATE()在存储过程和视图中使用得非常频繁。问题是 SQL Azure 使用 UTC 时区运行。我正在尝试用方法调用替换GETDATE()方法调用,该方法调用将根据数据库中的时区设置获取时间。我遇到的问题是夏令时。有没有人用 SQL 编写过可以返回当前日期/时间并正确调整 DST 的方法?

我猜我会得到一些答案,说我应该全面使用 UTC 时间。由于我不想解释的原因,这似乎不是一个选择。

您能给我的任何帮助/建议将不胜感激。谢谢。

4

2 回答 2

1

我们决定将相关列更新DateTimeOffsetDateTime.

感谢所有回复的人。

于 2012-04-24T20:34:57.777 回答
0

我不知道这是否会帮助你。但这会在 SERVER 注册表上执行注册表读取。在本地上下文中,您可以确定服务器时区和 GMT 之间的差异,并从那里执行您需要的必要计算。我从其他论坛帖子中学到的一个有用的小技巧(信用就在那里)。

Use Master
Go



DECLARE @ZONEDIFF INT

EXECUTE dbo.xp_regread 'HKEY_LOCAL_MACHINE','SYSTEM\CurrentControlSet\Control\TimeZoneInformation','ActiveTimeBias', @ZONEDIFF OUT

SELECT getdate() AS MyTime, dateadd(minute, @ZONEDIFF, getdate() ) as SERVERZONE

让我知道它是否有帮助或者我对您的理解不正确。

苹果电脑

于 2012-04-21T07:34:34.083 回答