在 SQL Server 2008 R2 中,如果我这样做:
select SYSDATETIMEOFFSET()
我回到格林威治标准时间-6。
运行 SQL Server 的 Windows 中的时区设置为 GMT -7。
任何想法为什么会有差异?我需要在 SQL Server 中的某个地方设置 TimeZone 吗?
在 SQL Server 2008 R2 中,如果我这样做:
select SYSDATETIMEOFFSET()
我回到格林威治标准时间-6。
运行 SQL Server 的 Windows 中的时区设置为 GMT -7。
任何想法为什么会有差异?我需要在 SQL Server 中的某个地方设置 TimeZone 吗?
我猜这是由于夏令时处于活动状态。您的时区正式命名为“GMT-7”,这意味着通常(不在一年中的夏令时部分)您的时间比 GMT 早 7 小时。但是在夏令时期间,该时间会被调整(通常是一个小时,但可能因时区而异)。因此,如果您当前处于夏令时,即使您处于“GMT-7”时区,您的时钟当前也只有 GMT-6(比 GMT 早 6 小时)。我怀疑 SYSDATETIMEOFFSET() 是在告诉您您目前与 GMT 的实际偏移量,而不是您的时区与 GMT 的“正常”偏移量。
MSDN说 SQL Server 使用 Windows 设置:
SQL Server 2012 使用 GetSystemTimeAsFileTime() Windows API 获取日期和时间值。
也许您更改时区后必须重新启动 SQL Server 服务?