2017-10-10 33 views
0

我们的服务器在美国的CST时区,CST的时区比UTC时区晚6小时。由于是夏令时,现在的差别是5个小时。SQL Server为函数返回错误的UTC时间GETUTCDATE

GETDATE函数返回正确的本地时间,但GETUTCDATE返回错误的UTC时间。 GETUTCDATE返回CST前7小时(UTC + 2:00)的时间。

检查服务器的时区并将其设置为CST时区(UTC - 6:00),并且选项“自动设置时区”已关闭。

我不知道还有什么要检查的。

回答

0

“自动设置时区”是Windows 10/Server 2016中添加的一项便利功能。它使用可用的位置信息来设置时区。这是没有必要的,而且真的不应该在服务器上重要。事实上,最好的做法是有意将服务器设置为UTC时区,以便本地时差不会发生干扰。你不妨考虑这个选项。

不过,也有几件事情要检查:

  1. 是服务器的时钟同步到一个可靠的时间源?

    • 如果您的服务器在域中,那么域控制器的时钟是否与基于Internet的时间源或其他可靠的时间源同步?
    • 如果不在域中,您是否打开了“自动设置时间”或“Internet时间”?或者其他一些正确设置时钟的机制?
    • 如果不确定时钟的同步位置,请从提升的命令提示符处尝试w32tm /query /source
    • 如果您只想检查原始UTC时间,请尝试Powershell中的[DateTime]::UtcNow。 (时区中没有或DST设置将影响结果。)
  2. 如果所述系统被配置用于本地时区,则“调整为自动夏令时”(或“自动调整时钟的日光在较旧的控制面板设置中保存时间“)是否打开?这个设置应该永远不会被禁用。它仅用于传统目的。

    • 如果不确定,请在命令提示符下尝试tzutil /g。如果结果中有_dstoff这个名字,那么你应该把它重新打开。