YMD_BETWEEN スカラー関数

YMD_BETWEEN 関数は、2 つの日時値の間の年数、月数、および日数を指す数値を戻します。

Read syntax diagramSkip visual syntax diagramYMD_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 値になります。

YMD_BETWEEN 関数は、以下の式の同義語です。
INTEGER( ( TIMESTAMP(expression1, 12) – TIMESTAMP(expression2, 12) ) / 1000000 )

結果は、タイム・スタンプ期間から抽出した年、月、および日の構成要素の整数表現となります。

  1. ホスト変数 YMD に、2013-09-23-23.59.59.123456789012 と 2013-09-24-23.59.59.123456789011 の間の年数、月数、および日数の数値を設定します。
       SET :YMD = YMD_BETWEEN(TIMESTAMP '2013-09-24-23.59.59.123456789011', 
          TIMESTAMP '2013-09-23-23.59.59.123456789012')
    引数の間は 1 日に 0.000000000001 秒足りないため、ホスト変数 YMD は 0 に設定されます。 結果が正になるのは、1 つ目の引数のほうが 2 つ目の引数より後の時間だからです。
  2. ホスト変数 YMD に、2013-09-23-23.59.59.123456789012 と 2013-09-24-23.59.59.123456789012 の間の年数、月数、および日数の数値を設定します。
       SET :YMD = YMD_BETWEEN(TIMESTAMP '2013-09-24-23.59.59.123456789012',
          TIMESTAMP '2013-09-23-23.59.59.123456789012')
    引数の間はちょうど 1 日であるため、ホスト変数 YMD は 1 に設定されます。 結果が正になるのは、1 つ目の引数のほうが 2 つ目の引数より後の時間だからです。
  3. ホスト変数 YMD に、2013-09-23-23.59.59.123456789012 と 2016-03-01-23.59.59.123456789011 の間の年数、月数、および日数の数値を設定します。
       SET :YMD = YMD_BETWEEN(TIMESTAMP '2013-09-23-23.59.59.123456789012', 
          TIMESTAMP '2016-03-01-23.59.59.123456789011')
    引数の間は 2 年 5 カ月と 8 日に 0.000000000001 秒足りないため、ホスト変数 YMD は -20507 に設定されます。 結果が負になるのは、1 つ目の引数のほうが 2 つ目の引数より前の時間だからです。