我们的服务器位于美国的CST时区,CST时区比UTC时区晚6小时。由于现在是夏令时,现在相差5个小时。
GETDATE
函数返回正确的本地时间,但GETUTCDATE
返回错误的UTC时间。GETUTCDATE
返回CST前7小时(UTC+2:00)的时间。
检查了服务器的时区,并将其设置为CST时区(UTC-6:00),"自动设置时区"选项已关闭。
我不知道还能查些什么。
"自动设置时区"是Windows 10/Server 2016中添加的一项便利功能。它使用可用的位置信息来设置时区。这不是必要的,在服务器上也不重要。事实上,最好的做法是故意将服务器设置为UTC时区,这样本地时差就不会干扰。你不妨考虑这一选择。
然而,有一些事情需要检查:
-
服务器的时钟是否与可靠的时间源同步?
- 如果您的服务器在域中,那么域控制器的时钟是否与基于Internet的时间源或其他可靠的时间源同步
- 如果不在域中,您是否已打开"自动设置时间"或"Internet时间"?或者其他正确设置时钟的机制
- 如果不确定时钟同步的位置,请从提升的命令提示符尝试
w32tm /query /source
- 如果您只想检查原始UTC时间,请尝试Powershell中的
[DateTime]::UtcNow
。(时区或夏令时设置都不会影响结果。)
-
如果系统配置为本地时区,是否已打开"自动调整夏令时"(或旧控制面板设置中的"自动调整夏时制时钟")?此设置实际上永远不应该被禁用。它只是为了遗产的目的。
- 如果不确定,请在命令提示符下尝试
tzutil /g
。如果结果的名称中有_dstoff
,那么您应该重新打开它
- 如果不确定,请在命令提示符下尝试