SYSDATETIMEOFFSET (Transact-SQL)

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsMicrosoft Fabric SQL Database

SYSDATETIMEOFFSET Transact-SQL(T-SQL)関数は、SQL Serverインスタンスが動作しているコンピュータの日付と時刻を含むdatetimeoffset(7)値を返します。 タイム ゾーン オフセットが含まれます。

日付と時刻のすべての 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 を使用して確認できます。

例

次の例では、現在の日付と時刻を返す 6 つの 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