Skip to main content

This documentation is for an older version of this product. See the latest version of this content.Opens in a new tab

GETDATE (SQL)

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

Synopsis

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 コマンドを使用します。

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

GETDATE は、フィールドの既定値を指定するために CREATE TABLE 内で使用できます。GETDATECURRENT_TIMESTAMP の同義語で、Sybase や Microsoft SQL Server との互換性を確保するために用意されています。

CURRENT_TIMESTAMP および NOW 関数を使用して、現在のローカル日付とローカル時刻を TIMESTAMP または POSIXTIME のいずれかの形式のタイムスタンプとして返すこともできます。精度は CURRENT_TIMESTAMP ではサポートされていますが、NOW ではサポートされていません。

現在の日付のみを返すには、CURDATE または CURRENT_DATE を使用します。現在の時刻のみを返すには、CURRENT_TIME または CURTIME を使用します。これらの関数では、データ型として DATE または TIME を使用します。これらの関数は、いずれも精度をサポートしません。

TIMESTAMP データ型は、同じ形式で値を格納および表示します。POSIXTIME データ型は、エンコードされた 64 ビットの符号付き整数としてその値を格納します。TIME データ型および DATE データ型では、値は、$HOROLOG 形式で整数として格納されます。それらは、表示形式または論理 (格納) 形式のどちらかで表示できます。日付および時刻のデータ型は、CAST または CONVERT 関数を使用して変更できます。

協定世界時 (UTC)

GETDATE は、現在のローカル日付とローカル時刻を返します。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 の既定の時間精度] の現在の設定を表示して編集します。

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

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

以下の例は、現在の日付と時刻を TIMESTAMP 形式で返します。

SELECT GETDATE() AS DateTime

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

SELECT GETDATE(2) AS DateTime

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

  &sql(SELECT GETDATE(),GETUTCDATE() INTO :a,:b)
  IF SQLCODE'=0 {
    WRITE !,"Error code ",SQLCODE }
  ELSE {
    WRITE !,"Local timestamp is:  ",a
    WRITE !,"UTC timestamp is:    ",b
    WRITE !,"$ZTIMESTAMP is:      ",$ZDATETIME($ZTIMESTAMP,3,,3)
 }

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

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

以下の例では、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