Skip to main content

GETDATE (SQL)

現在のローカル日付とローカル時刻を返す日付/時刻関数です。

構文

GETDATE([precision])

引数

引数 説明
precision オプション — 時刻の精度を秒の小数部の桁数として指定する正の整数。既定値は 0 (秒の小数部なし) です。この既定値は構成可能です。precision 値はオプションであり、括弧が必要となります。

概要

GETDATE は、このタイムゾーンの現在のローカル日付とローカル時刻をタイムスタンプとして返します。これはサマータイムなどのローカル時刻調整に合わせて調整されます。

GETDATE は、%TimeStamp データ型形式 (yyyy-mm-dd hh:mm:ss.ffff) または %PosixTime データ型形式 (エンコードされた 64 ビットの符号付き整数) のいずれかでタイムスタンプを返すことができます。返されるタイムスタンプ形式は以下のルールによって決まります。

  1. 現在のタイムスタンプがデータ型 %PosixTime のフィールドに対して指定されている場合、現在のタイムスタンプ値は POSIXTIME データ型形式で返されます。例として、WHERE PosixField=GETDATE()INSERT INTO MyTable (PosixField) VALUES (GETDATE()) が挙げられます。

  2. 現在のタイムスタンプがデータ型 %TimeStamp のフィールドに対して指定されている場合、現在のタイムスタンプ値は TIMESTAMP データ型形式で返されます。ODBC タイプは TIMESTAMP で、LENGTH は 16、PRECISION は 19 です。例として、WHERE TSField=GETDATE()INSERT INTO MyTable (TSField) VALUES (GETDATE()) が挙げられます。

  3. 現在のタイムスタンプがコンテキストなしで指定されている場合、現在のタイムスタンプ値は TIMESTAMP データ型形式で返されます。例として、SELECT GETDATE() が挙げられます。

既定の日付/時刻形式を変更するには、各種日付/時刻オプションで SET OPTION コマンドを使用します。

GETDATECURRENT_TIMESTAMP の同義語で、Sybase や Microsoft SQL Server との互換性を確保するために用意されています。CURRENT_TIMESTAMP および NOW 関数を使用して、現在のローカル日付とローカル時刻を TIMESTAMP または POSIXTIME のいずれかの形式のタイムスタンプとして返すこともできます。精度は CURRENT_TIMESTAMP ではサポートされていますが、NOW ではサポートされていません。

現在の日付のみを返すには、CURDATE または CURRENT_DATE を使用します。現在の時刻のみを返すには、CURRENT_TIME または CURTIME を使用します。これらの関数では、データ型として DATE または TIME を使用します。これらの関数は、いずれも精度をサポートしません。TIME データ型および DATE データ型では、値は、$HOROLOG 形式で整数として格納されます。それらは、表示形式または論理 (格納) 形式のどちらかで表示できます。日付および時刻のデータ型は、CAST または CONVERT 関数を使用して変更できます。

協定世界時 (UTC)

InterSystems SQL のタイムスタンプ関数、日付関数、および時刻関数は、GETUTCDATE を除いてすべて、ローカル・タイム・ゾーン設定に固有のものとなります。GETUTCDATE は、現在の UTC (ユニバーサル) の日付と時刻を TIMESTAMP 値または POSIXTIME 値のいずれかとして返します。ObjectScript の $ZTIMESTAMP 特殊変数を使用して、ユニバーサルな (タイム・ゾーンに依存しない) 現在のタイムスタンプを取得することもできます。

秒の小数部の精度

GETDATE では、小数点以下 9 桁までの精度の値を返すことができます。返される精度の桁数は precision 引数を使用して設定されます。precision 引数の既定値は、以下の方法で構成できます。

  • SET OPTION で TIME_PRECISION オプションを使用します。

  • システム全体の $SYSTEM.SQL.Util.SetOption()Opens in a new tab メソッド構成オプション DefaultTimePrecision。現在の設定を確認するには、$SYSTEM.SQL.CurrentSettings()Opens in a new tab を呼び出します。これにより、[既定の時刻精度] が表示されます。既定値は 0 です。

  • 管理ポータルに進み、[システム管理][構成][SQL およびオブジェクトの設定][SQL] の順に選択します。[GETDATE()、CURRENT_TIME、および CURRENT_TIMESTAMP の既定の時間精度] の現在の設定を表示して編集します。

precision 引数には 0 ~ 9 の整数を指定します。既定値は 0 です。実際に返される精度はプラットフォームに依存し、システムで使用可能な精度を超えた precision の桁はゼロとして返されます。

秒の小数部は、丸められずに、常に指定された精度に切り捨てられます。

レポートの設計では、GETDATE は、レポートが作成されるたびに、そのときの時刻/日付を印刷するために使用できます。また GETDATE は、トランザクションが発生した時刻のログ記録など、活動を追跡するのに便利です。

GETDATE は、SELECT 文の選択リスト内、またはクエリの WHERE 節内で使用できます。以下の例は、現在の日付と時刻を TIMESTAMP 形式で返します。

SELECT GETDATE() AS DateTime

以下の例は、2 桁の精度で現在の日付と時刻を返します。

SELECT GETDATE(2) AS DateTime

以下の例は、ローカル・タイムスタンプ (タイム・ゾーン依存) とユニバーサル・タイムスタンプ (タイム・ゾーン非依存) を比較します。

SELECT GETDATE(), GETUTCDATE()

以下の例は、Orders テーブルの指定された行の LastUpdate フィールドに、現在のシステム日付と時刻を設定します。LastUpdate がデータ型 %TimeStamp である場合、GETDATE は現在の日付と時刻を ODBC タイムスタンプとして返します。LastUpdate がデータ型 %PosixTime である場合、GETDATE は現在の日付と時刻をエンコードされた 64 ビットの符号付き整数として返します。

UPDATE Orders SET LastUpdate = GETDATE()
  WHERE Orders.OrderNumber=:ord

CREATE TABLEGETDATE を使用すると、特定のフィールドに既定値を指定できます。以下の例では、CREATE TABLE 文は GETDATE を使用して、StartDate フィールドに対して既定値を設定します。

CREATE TABLE Employees(
     EmpId       INT NOT NULL,
     LastName    CHAR(40) NOT NULL,
     FirstName   CHAR(20) NOT NULL,
     StartDate   TIMESTAMP DEFAULT GETDATE())

関連項目

FeedbackOpens in a new tab