MONTHS_BETWEEN
The MONTHS_BETWEEN function returns number of months between dates date1 and date2.
SQL syntax
MONTHS_BETWEEN(date1, date2)
Parameters
MONTHS_BETWEEN has the parameters:
| Parameter | Description |
|---|---|
|
|
A datetime value or any value that can be converted to a datetime value. |
|
|
A datetime value or any value that can be converted to a datetime value. |
Description
Input parameters can be any combination of all supported datetime data types, excluding the TIME or TT_TIME data types. The supported datetime data types include DATE, TIMESTAMP, TT_DATE, TT_TIMESTAMP, ORA_DATE, and ORA_TIMESTAMP. See "Data Types" for details on datetime data types.
The return data type is a NUMBER.
MONTHS_BETWEEN returns number of months between dates date1 and date2.
-
If
date1is later thandate2, the returned result is positive. -
If
date1is earlier thandate2, the returned result is negative. -
If
date1anddate2are both either the same day of the month or the last day of the month, the returned result is an integer. For all other cases, the returned result is a fraction based on a 31-day month that considers the difference in time components fordate1anddate2parameters.
Examples
The following examples calculate months between two given dates.
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.
The following command uses CAST to explicitly convert CHAR strings into timestamps. The first result is rounded to an integer.
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.