MONTHS_BETWEEN スカラー関数
MONTHS_BETWEEN 関数は、2 つの引数の間の見積もりの月数を戻します。
スキーマは SYSIBM です。
- expression1 または expression2
- 日付、タイム・スタンプ、文字ストリング、またはグラフィック・ストリングのいずれかの組み込みデータ・タイプの値を戻す式。 いずれかの式が文字ストリングまたはグラフィック・ストリングの場合、ストリングは CLOB または DBCLOB であってはなりません。このストリングの値は、日付またはタイム・スタンプの有効なストリング表現であることが必要で、実際の長さは 255 バイトを超えてはなりません。 タイム・スタンプのストリング表現内のタイム・ゾーンは無視されます。 日付とタイムスタンプの文字列表現の有効な形式については、「日時値の文字列表現」 を参照してください。
expression1 が TIMESTAMP WITH TIME ZONE 値である場合、expression1 は、最初に expression1 と同じ精度を持つ TIMESTAMP WITHOUT TIME ZONE にキャストされます。 expression2 が TIMESTAMP WITH TIME ZONE 値である場合、expression2 は、最初に expression2 と同じ精度を持つ TIMESTAMP WITHOUT TIME ZONE にキャストされます。
expression1 が expression2 よりも後の日付を表す場合、結果は正の値となります。 expression1 が expression2 より前の日付を表す場合、結果は負です。
- expression1 と expression2 が同じ月の日の日付またはタイム・スタンプを表すか、両方の引数がそれぞれの月の最後の日を表す場合、結果は年と月の値に基づく整数の差分です。タイム・スタンプ引数の時刻部分は無視されます。
- ただし、結果の整数部分は、年と月の値に基づく差です。 結果の小数部分は、すべての月が 31 日であるという想定に基づいて残りの部分から算出されます。 いずれかの引数がタイム・スタンプを表す場合、引数は事実上最大の精度を持つタイム・スタンプとして処理され、これらの値の時刻部分も結果を決定するときに考慮されます。
関数の結果は DECIMAL(31,15) です。
結果は NULL 値になることがあります。いずれかの引数が NULL 値である場合、結果は NULL 値になります。
例 1: 以下の例は、2 つの日付の間の月数を計算します。
SELECT MONTHS_BETWEEN ('2008-01-17','2008-02-17')
AS MONTHS_BETWEEN
FROM SYSIBM.SYSDUMMY1;このステートメントの結果は以下の結果と似たものになります。MONTHS_BETWEEN
----------------------------
-1.00000000000000 例 2: 以下の例は、2 つの日付の間の月数を計算します。
SELECT MONTHS_BETWEEN ('2008-02-20','2008-01-17')
AS MONTHS_BETWEEN
FROM SYSIBM.SYSDUMMY1;このステートメントの結果は以下の結果と似たものになります。MONTHS_BETWEEN
----------------------------
1.096774193548387例 3: プロジェクト AD3100 にかかる月数を計算します。 開始日が 1982-01-01、終了日が 1983-02-01 であるとします。
SELECT MONTHS_BETWEEN (PRENDATE, PRSDATE)
FROM PROJECT
WHERE PROJNO='AD3100';結果は 13.000000000000000 です。例 4: 次の表は、特定の状況における MONTHS_BETWEEN 関数の使用法を示しています。
| 価値 expression1 | 価値 expression2 | MONTHS_BETWEEN (expression1,expression2) によって戻される値 | ROUND ( MONTHS_BETWEEN (expression1,expression2)*31,2 ) によって戻される値 |
|---|---|---|---|
| 2005-02-02 | 2005-01-01 | 1.032258064516129 | 32.00 |
| 2007-11-01-09.00.00.00000 | 2007-12-07-14.30.12.12345 | -1.200945386592741 | -37.23 |
| 2007-12-13-09.40.30.00000 | 2007-11-13-08.40.30.00000 | 1.0000000000000001 | 31.001 |
| 2007-03-15 | 2007-02-20 | 0.8387096774193542 | 26.002 |
| 2008-02-29 | 2008-02-28-12.00.00 | 0.016129032258064 | 0.50 |
| 2008-03-29 | 2008-02-29 | 1.000000000000000 | 31.00 |
| 2008-03-30 | 2008-02-29 | 1.032258064516129 | 32.00 |
| 2008-03-31 | 2008-02-29 | 1.0000000000000003 | 31.003 |
注:
|
|||
