GETDATE (Transact-SQL)GETDATE (Transact-SQL)

適用対象: ○SQL Server ○Azure SQL Database ○Azure SQL Data Warehouse ○Parallel Data WarehouseAPPLIES TO: yesSQL Server yesAzure SQL Database yesAzure SQL Data Warehouse yesParallel Data Warehouse

として現在のデータベース システムのタイムスタンプを返す、 datetime 、データベース タイム ゾーン オフセットを持たない値。Returns the current database system timestamp as a datetime value without the database time zone offset. この値は、SQL ServerSQL Server のインスタンスが実行されているコンピューターのオペレーティング システムから取得されます。This value is derived from the operating system of the computer on which the instance of SQL ServerSQL Server is running.

注意

1 秒未満の有効桁数で比較すると、SYSDATETIME と SYSUTCDATETIME の方が GETDATE と GETUTCDATE よりも高い精度を得ることができます。SYSDATETIME and SYSUTCDATETIME have more fractional seconds precision than GETDATE and GETUTCDATE. SYSDATETIMEOFFSET には、システムのタイム ゾーン オフセットが含まれます。SYSDATETIMEOFFSET includes the system time zone offset. SYSDATETIME、SYSUTCDATETIME、および SYSDATETIMEOFFSET は、date 型と time 型の任意の変数に割り当てることができます。SYSDATETIME, SYSUTCDATETIME, and SYSDATETIMEOFFSET can be assigned to a variable of any of the date and time types.

すべての Transact-SQLTransact-SQL 日付および時刻のデータ型と関数の概要については、「日付と時刻のデータ型および関数 (Transact-SQL)」を参照してください。For an overview of all Transact-SQLTransact-SQL date and time data types and functions, see Date and Time Data Types and Functions (Transact-SQL).

トピック リンク アイコン Transact-SQL 構文表記規則Topic link icon Transact-SQL Syntax Conventions

構文Syntax

GETDATE ( )  

戻り値の型Return Type

datetimedatetime

RemarksRemarks

Transact-SQLTransact-SQL ステートメントを参照できます GETDATE を参照できる任意の場所、 datetime 式です。statements can refer to GETDATE anywhere they can refer to a datetime expression.

GETDATE は、非決定的関数です。GETDATE is a nondeterministic function. この関数を列内で参照するビューと式には、インデックスを付けることができません。Views and expressions that reference this function in a column cannot be indexed.

GETDATE() 関数で SWITCHOFFSET を使用すると、クエリの実行速度が低下する場合があります。クエリ オプティマイザーでは、GETDATE 値の正確なカーディナリティの推定を取得できないためです。Using SWITCHOFFSET with the function GETDATE() can cause the query to run slowly because the query optimizer is unable to obtain accurate cardinality estimates for the GETDATE value. GETDATE 値を事前計算して、次の例に示すように、クエリでその値を指定することをお勧めします。We recommend that you precompute the GETDATE value and then specify that value in the query as shown in the following example. さらに、OPTION (RECOMPILE) クエリ ヒントを使用して、次に同じクエリが実行されるときに、クエリ オプティマイザーでクエリ プランが強制的に再コンパイルされるようにします。In addition, use the OPTION (RECOMPILE) query hint to force the query optimizer to recompile a query plan the next time the same query is executed. そうすると、オプティマイザーによって、GETDATE() の正確なカーディナリティの推定が取得され、より効率的なクエリ プランが生成されます。The optimizer will then have accurate cardinality estimates for GETDATE() and will produce a more efficient query plan.

DECLARE @dt datetimeoffset = switchoffset (CONVERT(datetimeoffset, GETDATE()), '-04:00');   
SELECT * FROM t    
WHERE c1 > @dt OPTION (RECOMPILE);  
  

使用例Examples

次の例では、現在の日付と時刻を返す 6 つの SQL ServerSQL Server システム関数を使用して、日付、時刻、またはその両方を取得しています。The following examples use the six SQL ServerSQL Server system functions that return current date and time to return the date, time, or both. 値は順番に返されるため、秒の小数部が異なる可能性があります。The values are returned in series; therefore, their fractional seconds might be different.

A.A. 現在のシステム日付と時刻を取得するGetting the current system date and time

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

以下に結果セットを示します。Here is the result set.

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.B. 現在のシステム日付を取得するGetting the current system date

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

以下に結果セットを示します。Here is the result set.

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.C. 現在のシステム時刻を取得するGetting the current system time

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

以下に結果セットを示します。Here is the result set.

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 SQL データ ウェアハウスAzure SQL Data Warehouse および Parallel Data WarehouseParallel Data WarehouseExamples: Azure SQL データ ウェアハウスAzure SQL Data Warehouse and Parallel Data WarehouseParallel Data Warehouse

次の例では、現在の日付と時刻を返す 3 つの SQL ServerSQL Server システム関数を使用して、日付、時刻、またはその両方を取得しています。The following examples use the three SQL ServerSQL Server system functions that return current date and time to return the date, time, or both. 値は順番に返されるため、秒の小数部が異なる可能性があります。The values are returned in series; therefore, their fractional seconds might be different.

D.D. 現在のシステム日付と時刻を取得するGetting the current system date and time

SELECT SYSDATETIME()  
    ,CURRENT_TIMESTAMP  
    ,GETDATE();  

E.E. 現在のシステム日付を取得するGetting the current system date

SELECT CONVERT (date, SYSDATETIME())  
    ,CONVERT (date, CURRENT_TIMESTAMP)  
    ,CONVERT (date, GETDATE());  
  

F.F. 現在のシステム時刻を取得するGetting the current system time

SELECT CONVERT (time, SYSDATETIME())  
    ,CONVERT (time, CURRENT_TIMESTAMP)  
    ,CONVERT (time, GETDATE());  
  

参照See Also

CAST および CONVERT (Transact-SQL)CAST and CONVERT (Transact-SQL)