我正在移植现有应用程序以在Windows Azure上运行。我们当前的解决方案在很大程度上依赖于SQL在SQL Server上设置的时区。我们经常在存储过程和视图中使用GETDATE()
。问题是SQL Azure使用UTC时区运行。我正在尝试使用方法调用替换GETDATE()
方法调用,该方法调用将根据数据库中设置时区的设置来获取时间。我遇到的问题是夏令时。有没有人曾在SQL中编写过可以返回当前日期/时间并正确调整DST的方法?
我猜我会得到一些答案,说我应该全面使用UTC时间。由于我不愿解释,这似乎不是一种选择。
您可以给我的任何帮助/建议将不胜感激。感谢。
答案 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