SYSDATETIMEOFFSET (Transact-SQL)

適用於:SQL ServerAzure SQL 資料庫Azure SQL 受控執行個體Azure Synapse AnalyticsMicrosoft Fabric 中的 SQL 資料庫

SYSDATETIMEOFFSET Transact-SQL(T-SQL)函式回傳一個 datetimeoffset(7) 值,其中包含 SQL Server 實例執行的電腦日期與時間。 時區位移包括在內。

如需所有 Transact-SQL 日期和時間資料類型和函式的概觀,請參閱 日期和時間資料類型和函式。

Transact-SQL 語法慣例

語法

SYSDATETIMEOFFSET ( )

傳回類型

datetimeoffset(7)

備註

只要是 Transact-SQL 陳述式可以參考 datetimeoffset 運算式的任何位置,就可以參考 SYSDATETIMEOFFSET。

SYSDATETIMEOFFSET 是不具決定性的函數。 無法為資料行中參考此函式的檢視和運算式編製索引。

注意

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

範例

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

A. 顯示日期和時間函式所傳回的格式

下列範例示範日期和時間函數所傳回的不同格式。

SELECT SYSDATETIME(),
       SYSDATETIMEOFFSET(),
       SYSUTCDATETIME(),
       CURRENT_TIMESTAMP,
       GETDATE(),
       GETUTCDATE(),
       CURRENT_DATE;

結果集如下所示。

SYSDATETIME()        2026-09-01 16:15:37.7418724
SYSDATETIMEOFFSET()  2026-09-01 16:15:37.7418724 -06:00
SYSUTCDATETIME()     2026-09-01 22:15:37.7418724
CURRENT_TIMESTAMP    2026-09-01 16:15:37.740
GETDATE()            2026-09-01 16:15:37.740
GETUTCDATE()         2026-09-01 22:15:37.740
CURRENT_DATE         2026-09-01

B. 將日期和時間轉換為日期

下列範例會顯示如何將日期和時間值轉換成 date。

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

結果集如下所示。

SYSDATETIME()        2026-09-01
SYSDATETIMEOFFSET()  2026-09-01
SYSUTCDATETIME()     2026-09-01
CURRENT_TIMESTAMP    2026-09-01
GETDATE()            2026-09-01
GETUTCDATE()         2026-09-01
CURRENT_DATE         2026-09-01

C. 將日期和時間轉換為時間

下列範例會顯示如何將日期和時間值轉換成 time。

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

結果集如下所示。

SYSDATETIME()        16:15:37.7418724
SYSDATETIMEOFFSET()  16:15:37.7418724
SYSUTCDATETIME()     22:15:37.7418724
CURRENT_TIMESTAMP    16:15:37.740
GETDATE()            16:15:37.740
GETUTCDATE()         22:15:37.740