TIMESTAMPADD

TIMESTAMPADD関数は、指定された時間隔数をタイムスタンプに加算し、変更されたタイムスタンプを戻します。

SQL構文

TIMESTAMPADD (Interval, IntegerExpression, TimestampExpression)

パラメータ

TIMESTAMPADDには、次のパラメータがあります。

パラメータ 説明

Interval

指定された時間隔。リテラルとして表す必要があります。説明セクションに有効な値を示します。

IntegerExpression

TT_BIGINTに対して評価する式。

TimestampExpression

日時式。有効なデータ型は、ORA_DATEORA_TIMESTAMPTT_DATEおよびTT_TIMESTAMPです。(別名のDATEおよびTIMESTAMPデータ型も有効です)。TT_TIMEはサポートされていません。

説明

  • Intervalの有効な値は、次のとおりです。

    • SQL_TSI_FRAC_SECOND

    • SQL_TSI_SECOND

    • SQL_TSI_MINUTE

    • SQL_TSI_HOUR

    • SQL_TSI_DAY

    • SQL_TSI_WEEK

    • SQL_TSI_MONTH

    • SQL_TSI_QUARTER

    • SQL_TSI_YEAR

  • SQL_TSI_FRAC_SECONDは、10億分の1秒単位で表されます。

  • 戻り型は、元のデータ型と同じです。たとえば、式がTIMESTAMP型の場合、結果のデータ型はTIMESTAMPになります。正数のタイムスタンプ式(0001-01-01)のみ、問合せと結果の両方で使用できます。TT_DATEおよびTT_TIMESTAMPでは、データ型の開始範囲が1753-01-01であるため、タイムスタンプ式はこの日付と同等かそれ以上である必要があります。

  • IntegerExpressionまたはTimestampExpressionNULLの場合、結果はNULLになります。

  • この関数は、IntegerExpressionで求められる時間間隔の合計と時間隔を計算して、指定されたTimestampExpressionに加算します。1年加算するとタイムスタンプは12か月進み、1週間加算するとタイムスタンプは7日進みます。IntegerExpressionが負の場合は、指定された時間隔がTimestampExpressionから減算されます。

  • 指定された時間隔およびタイムスタンプ式を使用することによって、精度が失われる可能性があります。たとえば、時間隔がSQL_TSI_HOURのときに、IntegerExpressionに2を指定して、TimestampExpressionTT_DATEを指定すると、TimesTenは2時間を0日として扱い、元の日付に0日を加算した合計を戻すため、精度が失われることがあります。ただし、IntegerExpressionが48の場合、TimesTenは48時間を2日として扱い、元の日付に2日加算した合計を戻します。この場合、精度は失われません。

  • タイムスタンプの追加によって指定された構成要素がオーバーフローになる場合(60秒以上、24時間以上、12か月以上など)、オーバーフローは次の構成要素に引き継がれます。たとえば、秒の構成要素がオーバーフローになると、分の構成要素が進められます。

TIMESTAMPADD関数を使用して、タイムスタンプ'2009-11-30 10:00:00'に3か月加算します。TimesTenは、年を増分し、2月の28日に対応するように日付部分を調整します。

Command> SELECT TIMESTAMPADD (SQL_TSI_MONTH, 3, TIMESTAMP '2010-11-30 10:00:00') FROM dual;
< 2011-02-28 10:00:00 >
1 row found.

TIMESTAMPADD関数を使用して、タイムスタンプ'2010-12-31 23:59:59'に1秒加算します。TimesTenは、すべてのタイムスタンプの構成要素にオーバーフローを伝播し、適切に構成要素を進めます。

Command> SELECT TIMESTAMPADD (SQL_TSI_SECOND, 1, TIMESTAMP '2010-12-31 23:59:59' FROM dual;
< 2011-01-01 00:00:00 >
1 row found.