日期算術 - 月份或年份的日期差異

使用 MONTHS_BETWEEN( date1, date2 ) 可以找到兩個日期之間的月份差異

SELECT MONTHS_BETWEEN( DATE '2016-03-10', DATE '2015-03-10' ) AS difference FROM DUAL;

輸出:

DIFFERENCE        12

如果差異包括部分月份,那麼它將根據每月 31 天返回月份的分數 :

SELECT MONTHS_BETWEEN( DATE '2015-02-15', DATE '2015-01-01' ) AS difference FROM DUAL;

輸出:

DIFFERENCE 1.4516129

由於 MONTHS_BETWEEN 假設每月 31 天,每月可以減少天數,那麼這可能導致跨越月份之間邊界的差異的不同值。

例:

SELECT MONTHS_BETWEEN( DATE'2016-02-01', DATE'2016-02-01' - INTERVAL '1' DAY ) AS "JAN-FEB",
       MONTHS_BETWEEN( DATE'2016-03-01', DATE'2016-03-01' - INTERVAL '1' DAY ) AS "FEB-MAR",
       MONTHS_BETWEEN( DATE'2016-04-01', DATE'2016-04-01' - INTERVAL '1' DAY ) AS "MAR-APR",
       MONTHS_BETWEEN( DATE'2016-05-01', DATE'2016-05-01' - INTERVAL '1' DAY ) AS "APR-MAY"
FROM   DUAL;

輸出:

JAN-FEB FEB-MAR MAR-APR APR-MAY
------- ------- ------- -------
0.03226 0.09677 0.03226 0.06452

可以通過將月差除以 12 來找到年份的差異。