YEARS_BETWEEN スカラー関数

YEARS_BETWEEN 関数は、指定された引数の間の年数を戻します。

Read syntax diagramSkip visual syntax diagramYEARS_BETWEEN(expression1 ,expression2)

スキーマは SYSIBM です。

expression1
2 つの日時値の間の年数を計算するために使用する、1 つ目の日時値を指定する式。 式は DATE、TIMESTAMP、CHAR、 または VARCHAR データ・タイプの値を戻す必要があります。 Unicode データベースでは、 式は GRAPHIC または VARGRAPHIC のデータ・タイプにすることもできます。 CHAR、VARCHAR、GRAPHIC、および VARGRAPHIC は、暗黙的キャストを介してサポートされます。 expression1 が CHAR、VARCHAR、GRAPHIC、または VARGRAPHIC のデータ・タイプである場合は、TIMESTAMP スカラー関数で使用できる有効なストリングでなければなりません。
expression2
2 つの日時値の間の年数を計算するために使用する、2 つ目の日時値を指定する式。 式は DATE、TIMESTAMP、CHAR、 または VARCHAR データ・タイプの値を戻す必要があります。 Unicode データベースでは、 式は GRAPHIC または VARGRAPHIC のデータ・タイプにすることもできます。 CHAR、VARCHAR、GRAPHIC、および VARGRAPHIC は、暗黙的キャストを介してサポートされます。 expression2 が CHAR、VARCHAR、GRAPHIC、または VARGRAPHIC のデータ・タイプである場合は、TIMESTAMP スカラー関数で使用できる有効なストリングでなければなりません。

expression1expression2 の間が 1 年に満たない場合、結果はゼロになります。 expression1expression2 より後である場合、結果は正になります。 expression1expression2 より前である場合、結果は負になります。 expression1 または expression2 に時刻情報が含まれている場合は、その情報も年数の計算に使用されます。 expression1 または expression2 に時刻情報が含まれていない場合は、時刻情報が欠落している引数の時刻として午前 0 時 (00.00.00) が使用されます。

この関数の結果は INTEGER です。 引数のいずれかが NULL になる可能性がある場合、結果も NULL になる可能性があります。 引数が NULL の場合、結果は NULL 値になります。

YEARS_BETWEEN 関数は、次の式の同義語です。
YEAR( TIMESTAMP( expression1, 12 ) – TIMESTAMP( expression2, 12 ) )

  1. ホスト変数 NUM_YEARS に、2013-02-28 と 2012-02-29 の間の年数を設定します。
       SET :NUM_YEARS = YEARS_BETWEEN(DATE '2013-02-28', DATE '2012-02-29')
    ホスト変数 NUM_YEARS は 0 に設定されます。2012 年 2 月 29 日の存在によって、引数間の年数が 1 年に 1 日足りないからです。
  2. ホスト変数 NUM_YEARS に、2013-12-31 と 2001-01-01 の間の年数を設定します。
       SET :NUM_YEARS = YEARS_BETWEEN(DATE '2013-12-31', DATE '2001-01-01')
    ホスト変数 NUM_YEARS は 12 に設定されます。引数間の年数が 13 年に 1 日足りないからです。 結果が正になるのは、1 つ目の引数のほうが 2 つ目の引数より後の時間だからです。
  3. ホスト変数 NUM_YEARS に、2001-01-01-00.00.00 と 2013-12-31-23.59.59 の間の年数を設定します。
       SET :NUM_YEARS = YEARS_BETWEEN(TIMESTAMP '2001-01-01-00.00.00',
          TIMESTAMP '2013-12-31-23.59.59')
    ホスト変数 NUM_YEARS は -12 に設定されます。引数間の値が 13 年に 1 日足りないからです。 結果が負になるのは、1 つ目の引数のほうが 2 つ目の引数より前の時間だからです。