次の方法で共有


SYSDATETIMEOFFSET (Transact-SQL)

適用対象: SQL Server Azure SQL データベース Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)

SQL Server のインスタンスを実行しているコンピューターの日付と時刻を含む datetimeoffset(7) 値を返します。 タイム ゾーン オフセットが含まれます。

Transact-SQL の日付と時刻のデータ型および関数の概要については、「日付と時刻のデータ型および関数 (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() AS [SYSDATETIME()]  
    ,SYSDATETIMEOFFSET() AS [SYSDATETIMEOFFSET()]  
    ,SYSUTCDATETIME() AS [SYSUTCDATETIME()]  
    ,CURRENT_TIMESTAMP AS [CURRENT_TIMESTAMP]  
    ,GETDATE() AS [GETDATE()]  
    ,GETUTCDATE() AS [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. 日付と時刻を日付に変換する

次の例では、日付と時刻の値を date に変換する方法を示します。

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

結果セットは次のとおりです。

2007-04-30
2007-04-30
2007-04-30
2007-04-30
2007-04-30
2007-04-30

C: 日付と時刻を時刻に変換する

次の例では、日付と時刻の値を time に変換する方法を示します。

SELECT CONVERT (time, SYSDATETIME()) AS [SYSDATETIME()]  
    ,CONVERT (time, SYSDATETIMEOFFSET()) AS [SYSDATETIMEOFFSET()]  
    ,CONVERT (time, SYSUTCDATETIME()) AS [SYSUTCDATETIME()]  
    ,CONVERT (time, CURRENT_TIMESTAMP) AS [CURRENT_TIMESTAMP]  
    ,CONVERT (time, GETDATE()) AS [GETDATE()]  
    ,CONVERT (time, GETUTCDATE()) AS [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

参照

CAST および CONVERT (Transact-SQL)
日付と時刻のデータ型および関数 (Transact-SQL)