SYSDATETIME (Transact-SQL)

傳回 datetime2(7) 値,此值包含其上執行 SQL Server 執行個體之電腦的日期和時間。

[!附註]

SYSDATETIME 和 SYSUTCDATETIME 比 GETDATE 和 GETUTCDATE 具有更多小數秒數有效位數。SYSDATETIMEOFFSET 包含系統時區位移。SYSDATETIME、SYSUTCDATETIME 和 SYSDATETIMEOFFSET 可指派給任何日期和時間類型的變數。

如需所有 Transact-SQL 日期和時間資料類型與函數的概觀,請參閱<日期和時間資料類型與函數 (Transact-SQL)>。如需日期和時間資料類型與函數通用的資訊和範例,請參閱<使用日期和時間資料>。

主題連結圖示Transact-SQL 語法慣例

語法

SYSDATETIME ( )

傳回類型

datetime2(7)

備註

只要是 Transact-SQL 陳述式可以參考 datetime2(7) 運算式的任何位置,它們就可以參考 SYSDATETIME。

SYSDATETIME 是不具決定性的函數。在資料行中參考這個函數的檢視表和運算式無法編製索引。

[!附註]

SQL Server 2008 會使用 GetSystemTimeAsFileTime() Windows API 來取得日期和時間値。精確度取決於執行 SQL Server 執行個體的電腦硬體和 Windows 版本。此 API 的精確度是固定於 100 奈秒。精確度可藉由使用 GetSystemTimeAdjustment() Windows API 來判斷。

範例

下列範例會使用六個可傳回目前日期和時間的 SQL Server 系統函數來傳回日期、時間或這兩者。由於這些值會依序傳回,因此其小數秒數可能會不同。

A. 取得目前的系統日期和時間

SELECT SYSDATETIME()
    ,SYSDATETIMEOFFSET()
    ,SYSUTCDATETIME()
    ,CURRENT_TIMESTAMP
    ,GETDATE()
    ,GETUTCDATE();
/* Returned:
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());

/* All returned 2007-04-30 */

C. 取得目前的系統時間

SELECT CONVERT (time, SYSDATETIME())
    ,CONVERT (time, SYSDATETIMEOFFSET())
    ,CONVERT (time, SYSUTCDATETIME())
    ,CONVERT (time, CURRENT_TIMESTAMP)
    ,CONVERT (time, GETDATE())
    ,CONVERT (time, GETUTCDATE());

/* Returned
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
*/