SQL Server为函数GETUTCDATE返回错误的UTC时间

时间:2017-10-10 06:46:36

标签: sql-server datetime sql-server-2012 timezone

我们的服务器位于美国的CST时区,CST时区比UTC时区落后6小时。由于是夏令时,现在相差5小时。

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

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

我不确定还有什么要检查的。

1 个答案:

答案 0 :(得分:0)

"自动设置时区"是Windows 10 / Server 2016中添加的便利。它使用可用的位置信息来设置时区。这不是必需的,在服务器上真的不重要。事实上,最佳做法是故意将服务器设置为UTC时区,以便本地时差不会干扰。您可能希望考虑该选项。

但是,有几件事需要检查:

  1. 您的服务器时钟是否与可靠的时间源同步?

    • 如果您的服务器位于域中,那么域控制器的时钟是否与基于Internet的时间源或其他可靠的时间源同步?
    • 如果不在某个域中,您是否有"自动设置时间"或者"互联网时间"打开?或者其他一些正确设置时钟的机制?
    • 如果不确定时钟的同步位置,请从提升的命令提示符处尝试w32tm /query /source
    • 如果您只想查看原始UTC时间,请尝试使用Powershell中的[DateTime]::UtcNow。 (时区或夏令时设置都不会影响结果。)
  2. 如果系统配置为本地时区,则"自动调整夏令时" (或"自动调节夏令时的时钟"在较旧的控制面板设置中)是否已打开?绝对不应禁用此设置。它仅用于遗留目的。

    • 如果不确定,请在命令提示符下尝试tzutil /g。如果结果名称中包含_dstoff,那么您应该重新打开它。