YEARS_BETWEEN スカラー関数
YEARS_BETWEEN 関数は、指定された引数の間の年数を戻します。
スキーマは 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 スカラー関数で使用できる有効なストリングでなければなりません。
expression1 と expression2 の間が 1 年に満たない場合、結果はゼロになります。 expression1 が expression2 より後である場合、結果は正になります。 expression1 が expression2 より前である場合、結果は負になります。 expression1 または expression2 に時刻情報が含まれている場合は、その情報も年数の計算に使用されます。 expression1 または expression2 に時刻情報が含まれていない場合は、時刻情報が欠落している引数の時刻として午前 0 時 (00.00.00) が使用されます。
この関数の結果は INTEGER です。 引数のいずれかが NULL になる可能性がある場合、結果も NULL になる可能性があります。 引数が NULL の場合、結果は NULL 値になります。
YEARS_BETWEEN 関数は、次の式の同義語です。
YEAR( TIMESTAMP( expression1, 12 ) – TIMESTAMP( expression2, 12 ) )
例
- ホスト変数 NUM_YEARS に、2013-02-28 と 2012-02-29 の間の年数を設定します。
ホスト変数 NUM_YEARS は 0 に設定されます。2012 年 2 月 29 日の存在によって、引数間の年数が 1 年に 1 日足りないからです。SET :NUM_YEARS = YEARS_BETWEEN(DATE '2013-02-28', DATE '2012-02-29')
- ホスト変数 NUM_YEARS に、2013-12-31 と 2001-01-01 の間の年数を設定します。
ホスト変数 NUM_YEARS は 12 に設定されます。引数間の年数が 13 年に 1 日足りないからです。 結果が正になるのは、1 つ目の引数のほうが 2 つ目の引数より後の時間だからです。SET :NUM_YEARS = YEARS_BETWEEN(DATE '2013-12-31', DATE '2001-01-01')
- ホスト変数 NUM_YEARS に、2001-01-01-00.00.00 と 2013-12-31-23.59.59 の間の年数を設定します。
ホスト変数 NUM_YEARS は -12 に設定されます。引数間の値が 13 年に 1 日足りないからです。 結果が負になるのは、1 つ目の引数のほうが 2 つ目の引数より前の時間だからです。SET :NUM_YEARS = YEARS_BETWEEN(TIMESTAMP '2001-01-01-00.00.00', TIMESTAMP '2013-12-31-23.59.59')