如果我今天(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。
答案 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