2017-08-03 88 views
3

我有一个.net应用程序运行在设置为PST的Azure服务器上,它连接到设置为UTC时间的Azure SQL服务器。我在很多存储过程中使用函数getDate()。未来的时区将是一个关键问题,需要让它们同步。使用函数DateAdd(小时,-8,getDate())不考虑夏令时。我想知道是否有更好的方法来处理这个问题。Azure SQL数据库时间问题

回答

3

将您所有的datetime列更改为datetimeoffset(7)列。这些列存储时区信息以及日期和时间。

将您的GETDATE()电话更改为SYSDATETIMEOFFSET()

最后,您可以使用关键字AT TIME ZONE转换存储的时间信息:

SELECT *, 
     [Time] AT TIME ZONE 'Pacific Standard Time' AS PstTime 
FROM  TheTable 
  • 我已经试过datetime值始终存储UTC(或任何其他任意区),并一直运行到问题。切换到datetimeoffset(7)后,几乎所有的问题都解决了。