現在の日付と時刻を返す、汎用日付/時刻関数です。
Synopsis
CURRENT_TIMESTAMP[(precision)]
引数
precision オプション — 時刻の精度を秒の小数部の桁数として指定します。有効値は整数の 0 ~ 9 で、既定値は 0 (秒の小数部はなし) です。この既定値は構成可能です。
概要
CURRENT_TIMESTAMP は引数なしで使用するか、または 1 つの精度引数とともに使用し、TIMESTAMP データ型として現在の日付と時刻を返します。空引数の括弧は使用しません。CURRENT_TIMESTAMP は、既定の仕様として使用されます。
日付と時刻を表す文字列は、以下の形式で返されます。
yyyy-mm-dd hh:mm:ss.ffff
"f" は、秒単位の小数精度を表します。
既定の日付/時刻形式を変更するには、各種日付/時刻オプションで SET OPTION コマンドを使用します。
現在の日付と時刻を TIMESTAMP データ型で返す場合は、GETDATE および NOW 関数を使用できます。GETDATE は精度をサポートし、NOW は精度をサポートしません。
現在の日付のみを返すには、CURDATE または CURRENT_DATE を使用します。現在の時刻のみを返すには、CURRENT_TIME または CURTIME を使用します。これらの関数は、その値を DATE または TIME データ型で返します。これらの関数は、いずれも精度をサポートしません。
埋め込み SQL を使用するときは、これらのデータ型の動作が異なります。TIMESTAMP データ型は、同じ形式で値を格納および表示します。TIME および DATE データ型は $HOROLOG 形式の整数として値を格納し、SQL で表示されるときは日付または時刻表示形式に変換され、埋め込み SQL から返されるときは整数として返されます。日付および時刻のデータ型は、CAST または CONVERT 関数を使用して変更できます。
すべての Caché SQL タイムスタンプ関数は、ローカル・タイム・ゾーン設定に依存します。ユニバーサルな (タイム・ゾーンに依存しない) 現在のタイムスタンプを取得するには、Caché ObjectScript の $ZTIMESTAMP 特殊変数を使用します。
秒の小数部の精度
CURRENT_TIMESTAMP は、小数点以下 9 桁までの精度の値を返すことができます。返される精度の桁数は precision 引数を使用して設定します。precision 引数の既定値は、以下の方法で構成できます。
返される小数点以下の桁数の既定値を含めて 0 ~ 9 の整数を指定します。初期の既定値は 0 です。返される実際の精度はプラットフォームに依存し、システムでサポートされる精度を超える precision 桁はゼロとして返されます。
以下の例は、現在の日付と時刻を返します。
SELECT DISTINCT CURRENT_TIMESTAMP AS DateTime
FROM Sample.Person
以下の例は、2 桁の精度で現在の日付と時刻を返します。
SELECT DISTINCT CURRENT_TIMESTAMP(2) AS DateTime
FROM Sample.Person
以下の埋め込み SQL の例は、ローカル・タイムスタンプ (タイム・ゾーン依存) とユニバーサル・タイムスタンプ (タイム・ゾーン非依存) を比較します。
  SET b=$ZDATETIME($ZTIMESTAMP,3)
  &sql(SELECT CURRENT_TIMESTAMP
  INTO :a
  FROM Sample.Person)
  IF SQLCODE'=0 {
    WRITE !,"Error code ",SQLCODE }
  ELSE {
    WRITE !,"Timestamp is:  ",a
    WRITE !,"ZTimestamp is: ",b }
以下の例は、Orders テーブルの指定された行の LastUpdate フィールドに、現在のシステム日付と時刻を設定します。
UPDATE Orders SET LastUpdate = CURRENT_TIMESTAMP
  WHERE Orders.OrderNumber=:ord
以下に例を示します。
CREATE TABLE Employees (
     EmpId       INT NOT NULL,
     LastName    CHAR(40) NOT NULL,
     FirstName   CHAR(20) NOT NULL,
     StartDate   TIMESTAMP DEFAULT (CURRENT_TIMESTAMP),
     PRIMARY KEY (EmpId))
Employees という名前のテーブルを作成します。このテーブルには、各レコードに対する列の数があります。EmpId 列 (従業員の ID 番号を含む) は、NULL ではない整数値です。従業員の姓と名にはそれぞれ列があり、どちらも NULL ではない文字列です。StartDate 列は従業員の開始日付を含み、TIMESTAMP データ型を使用し、CURRENT_TIMESTAMP で現在のシステム日付と時刻を既定値として挿入します。
関連項目