How To Calculate Difference Between Dates in Oracle SQL
How To Calculate Difference Between Dates in Oracle SQL
NUM_MONTHS
---------2.77419354
DIFF_IN_DAYS
-----------84
Using plain math to get the number of months between two dates
SQL> SELECT
2
3 FROM
NUM_MONTHS
---------2
DIFF_IN_DAYS
-----------84
END_DATE
----------3/25/2012
DIFF_IN_DAYS
-----------84
START_MONTH
----------1
END_MONTH
---------3
DIFF_IN_MONTHS
-------------2
Example # 3: How to get the number of years and months between two dates
SQL> SELECT
2
3 FROM
TRUNC(MONTHS_B
-----------------------------26
DIFF_IN_DAYS
-----------814
But, if we want to show the number of years as well, we can do something like this:
SQL> SELECT
2
3
num_years
4
num_months
5 FROM
DIFF_IN_DAYS
-----------875
TRUNC(MONTHS_B
-----------------------------28
NUM_MONTHS
---------4
Another way to do show the number of years and months could be something like this:
SQL> SELECT
TO_DATE('20100101', 'YYYYMMDD') start_date
2
,TO_DATE('20120525', 'YYYYMMDD') end_date
3
,(TO_DATE('20120525', 'YYYYMMDD') - TO_DATE('20100101', 'YYYYMMDD')) diff_in_days
4
,EXTRACT(YEAR FROM TO_DATE('20100101', 'YYYYMMDD')) start_month
5
,EXTRACT(YEAR FROM TO_DATE('20120525', 'YYYYMMDD')) end_month
6
,EXTRACT(MONTH FROM TO_DATE('20100101', 'YYYYMMDD')) start_month
7
,EXTRACT(MONTH FROM TO_DATE('20120525', 'YYYYMMDD')) end_month
8
,(EXTRACT(YEAR FROM TO_DATE('20120525', 'YYYYMMDD')) - EXTRACT(YEAR FROM TO_DATE('20100101', 'YYYYMMDD')))
diff_in_years
9
,(EXTRACT(MONTH FROM TO_DATE('20120525', 'YYYYMMDD')) - EXTRACT(MONTH FROM TO_DATE('20100101', 'YYYYMMDD')))
diff_in_months
10 FROM
dual
START_DATE END_DATE DIFF_IN_DAYS START_MONTH END_MONTH START_MONTH END_MONTH DIFF_IN_YEARS DIFF_IN_MONTHS
----------- ----------- ------------ ----------- ---------- ----------- ---------- ------------- -------------1/1/2010 5/25/2012
875
2010
2012
1
5
2
4