为什么GetDate()返回明天的日期?

时间:2017-10-09 01:09:25

标签: sql-server timezone getdate

如果我今天(2017年10月9日)针对SQL Server 2008实例执行select GetDate(),则该函数将返回10/10/2017,即明天的日期。 但是,select convert(date, getDate())将返回9/10/2017。我不明白为什么。

可能相关:Microsoft文档说

  

将当前数据库系统时间戳记作为日期时间值返回   没有数据库时区偏移量。这个值来源于   SQL Server实例的计算机操作系统   正在运行。

without the database time zone offset究竟是什么意思?我的SQL Server目前处于GMT + 11。

2 个答案:

答案 0 :(得分:0)

Try to look out base on given examples here

GetDate()函数不检查当前时区,它给出了计算机时间。

尝试使用CURRENT_TIMESTAMP可能会有所帮助

最好的问候..

答案 1 :(得分:0)

尝试使用

SELECT CURRENT_TIMESTAMP;

OR

SELECT SYSDATETIME();

对于系统日期和时间。

此外,使用以下方式获取UTC和当地时间:

SELECT GETUTCDATE() As UTCDateTime

并且

SELECT CONVERT( DATETIME, SWITCHOFFSET(CONVERT(DATETIMEOFFSET, GETUTCDATE()), DATENAME(TzOffset, SYSDATETIMEOFFSET()))) AS LocalDateTime