SQL Server中特定时区的本地时间

时间:2012-04-20 20:24:52

标签: sql-server azure-sql-database

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

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

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

2 个答案:

答案 0 :(得分:1)

我们已决定将相关列更新为DateTimeOffset而不是DateTime

感谢所有回复的人。

答案 1 :(得分:0)

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

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

如果有帮助或者我没有正确理解你,请告诉我。

的Mac