MONTHS_BETWEEN

MONTHS_BETWEEN関数は、日付date1date2の間の月数を戻します。

SQL構文

MONTHS_BETWEEN(date1, date2)

パラメータ

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

パラメータ 説明

date1

日時値、または日時値に変換可能な任意の値。

date2

日時値、または日時値に変換可能な任意の値。

説明

入力パラメータは、TIMEまたはTT_TIMEデータ型を除き、サポートされているすべての日時データ型の組合せになります。サポートされている日時データ型は、DATETIMESTAMPTT_DATETT_TIMESTAMPORA_DATEおよびORA_TIMESTAMPです。日時データ型の詳細は、「データ型」を参照してください。

戻りデータ型は、NUMBERです。

MONTHS_BETWEENは、日付date1date2の間の月数を戻します。

  • date1date2より後の日付の場合、結果は正の値になります。

  • date1date2より前の日付の場合、結果は負の値になります。

  • date1date2の両方が月の同じ日または月の最終日の場合、戻される結果は整数になります。それ以外の場合に戻される結果は、date1date2のパラメータの時刻部分の差を考慮した1か月31日を基準とする小数になります。

次の例では、2つの日付間の月数を計算します。

Command> SELECT MONTHS_BETWEEN(DATE '1995-02-02', DATE '1995-01-01') 
           AS Months FROM dual;
 
MONTHS
< 1.03225806451613 >
1 row found. 

Command> SELECT MONTHS_BETWEEN(DATE '2010-02-02', DATE '2010-10-01') "Months"
         FROM dual;
 
MONTHS
< -7.96774193548387 >
1 row found.
 

次のコマンドでは、CASTを使用し、CHAR文字列を明示的にタイムスタンプに変換します。最初の結果は整数に丸められます。

Command> SELECT ROUND ( MONTHS_BETWEEN (CAST ('2010-04-15 14:13:52' 
           AS TIMESTAMP), CAST ('2000-12-31 00:00:00' AS TIMESTAMP))), 
           MONTHS_BETWEEN (CAST ('2010-04-15 14:13:52' AS TIMESTAMP), 
           CAST ('2000-12-31 00:00:00' AS TIMESTAMP)) 
         FROM dual;

< 112, 111.502998805257 >
1 row found.