適用於:SQL Server
Azure SQL 資料庫
Azure SQL 受控執行個體
Azure Synapse Analytics
分析平台系統(PDW)
Microsoft Fabric 中的 SQL 分析端點
Microsoft Fabric 中的倉儲
Microsoft Fabric 中的 SQL 資料庫
將目前資料庫的系統時間戳記以 datetime 值傳回 (不含資料庫時區位移)。 這個值是從執行 SQL Server 執行個體的電腦作業系統得來的。
注意
SYSDATETIME 和 SYSUTCDATETIME 比 GETDATE 和 GETUTCDATE 具有更多小數秒數有效位數。 SYSDATETIMEOFFSET 包含系統時區位移。 SYSDATETIME、SYSUTCDATETIME 和 SYSDATETIMEOFFSET 可指派給任何日期和時間類型的變數。
Azure SQL Database (Azure SQL 受控執行個體除外) 與 Azure Synapse Analytics 會遵循 UTC。 在 Azure SQL Database 或 Azure Synapse Analytics 中,如果您需要解譯非 UTC 時區的日期與時間資訊,請使用 AT TIME ZONE。
如需所有 Transact-SQL 日期和時間資料類型與函式的概觀,請參閱日期和時間資料類型與函式 (Transact-SQL)。
語法
GETDATE()
傳回類型
datetime
備註
只要 Transact-SQL 陳述式可以參考 datetime 運算式,就可以參考 GETDATE。
GETDATE 是不具決定性的函數。 在資料行中參考這個函數的檢視表和運算式無法編製索引。
將 SWITCHOFFSET 搭配 GETDATE() 函數使用可能會導致查詢執行速度緩慢,因為查詢最佳化工具無法取得 GETDATE 值精確的基數估計值。 建議您預先計算 GETDATE 值,然後再由查詢中指定該值,如下列範例所示。 此外,請使用 OPTION (RECOMPILE) 查詢提示,強制查詢最佳化工具在下次執行相同的查詢時重新編譯查詢計劃。 這可讓最佳化工具針對 GETDATE() 取得精確的基數估計值,從而產生更有效率的查詢計劃。
DECLARE @dt datetimeoffset = switchoffset (CONVERT(datetimeoffset, GETDATE()), '-04:00');
SELECT * FROM t
WHERE c1 > @dt OPTION (RECOMPILE);
範例
下列範例會使用六個可傳回目前日期與時間的 SQL Server 系統函數,來傳回日期、時間或這兩者。 由於這些值會依序傳回,因此其小數秒數可能會不同。
A. 取得目前的系統日期和時間
SELECT SYSDATETIME()
,SYSDATETIMEOFFSET()
,SYSUTCDATETIME()
,CURRENT_TIMESTAMP
,GETDATE()
,GETUTCDATE();
結果集如下所示。
SYSDATETIME() 2007-04-30 13:10:02.0474381
SYSDATETIMEOFFSET()2007-04-30 13:10:02.0474381 -07:00
SYSUTCDATETIME() 2007-04-30 20:10:02.0474381
CURRENT_TIMESTAMP 2007-04-30 13:10:02.047
GETDATE() 2007-04-30 13:10:02.047
GETUTCDATE() 2007-04-30 20:10:02.047
B. 取得目前的系統日期
SELECT CONVERT (date, SYSDATETIME())
,CONVERT (date, SYSDATETIMEOFFSET())
,CONVERT (date, SYSUTCDATETIME())
,CONVERT (date, CURRENT_TIMESTAMP)
,CONVERT (date, GETDATE())
,CONVERT (date, GETUTCDATE());
結果集如下所示。
SYSDATETIME() 2007-05-03
SYSDATETIMEOFFSET() 2007-05-03
SYSUTCDATETIME() 2007-05-04
CURRENT_TIMESTAMP 2007-05-03
GETDATE() 2007-05-03
GETUTCDATE() 2007-05-04
C. 取得目前的系統時間
SELECT CONVERT (time, SYSDATETIME())
,CONVERT (time, SYSDATETIMEOFFSET())
,CONVERT (time, SYSUTCDATETIME())
,CONVERT (time, CURRENT_TIMESTAMP)
,CONVERT (time, GETDATE())
,CONVERT (time, GETUTCDATE());
結果集如下所示。
SYSDATETIME() 13:18:45.3490361
SYSDATETIMEOFFSET() 13:18:45.3490361
SYSUTCDATETIME() 20:18:45.3490361
CURRENT_TIMESTAMP 13:18:45.3470000
GETDATE() 13:18:45.3470000
GETUTCDATE() 20:18:45.3470000
範例:Azure Synapse Analytics 和 Analytics Platform System (PDW)
下列範例會使用三個可傳回目前日期和時間的 SQL Server 系統函數來傳回日期、時間或兩者一起傳回。 由於這些值會依序傳回,因此其小數秒數可能會不同。
D. 取得目前的系統日期和時間
SELECT SYSDATETIME()
,CURRENT_TIMESTAMP
,GETDATE();
E. 取得目前的系統日期
SELECT CONVERT (date, SYSDATETIME())
,CONVERT (date, CURRENT_TIMESTAMP)
,CONVERT (date, GETDATE());
F. 取得目前的系統時間
SELECT CONVERT (time, SYSDATETIME())
,CONVERT (time, CURRENT_TIMESTAMP)
,CONVERT (time, GETDATE());