SQL GetDate() 显示当前日期还是系统日期?

SQL GetDate() displays current date or system date?

我想知道 SQL GETDATE() 显示实际当前日期还是系统日期?

MSDN里面说的很清楚:

getdate() returns the current database system timestamp as a datetime value without the database time zone offset. This value is derived from the operating system of the computer on which the instance of SQL Server is running.

据我所知有六个 SQL 服务器日期函数,它们都从操作系统中获取当前日期(是否可以从外部获取日期?是否可以有多个日期在同一台计算机上?)。不同之处在于时区及其解释。看看这个查询:

SELECT 'SYSDATETIME' [Name], SYSDATETIME() 
UNION ALL
SELECT 'SYSDATETIMEOFFSET', SYSDATETIMEOFFSET()  
UNION ALL
SELECT 'SYSUTCDATETIME', SYSUTCDATETIME()  
UNION ALL
SELECT 'CURRENT_TIMESTAMP', CURRENT_TIMESTAMP  
UNION ALL
SELECT 'GETDATE', GETDATE()  
UNION ALL
SELECT 'GETUTCDATE', GETUTCDATE();

在我的电脑上这会产生:

SYSDATETIME         2016-07-27 13:44:12.8562698 +00:00
SYSDATETIMEOFFSET   2016-07-27 13:44:12.8562698 +02:00
SYSUTCDATETIME      2016-07-27 11:44:12.8562698 +00:00
CURRENT_TIMESTAMP   2016-07-27 13:44:12.8530000 +00:00
GETDATE             2016-07-27 13:44:12.8530000 +00:00
GETUTCDATE          2016-07-27 11:44:12.8530000 +00:00

我的建议是分析此脚本,查看差异并阅读 MSDN Documentation 有关这些功能的信息。