Wednesday, February 23, 2011

Calculate TIME Difference in single sql query

SELECT
TRUNC(DATES.START_DATE - DATES.END_DATE) ||' DAYS '||
TRUNC((DATES.START_DATE - DATES.END_DATE) * 24 - TRUNC(TO_NUMBER(DATES.START_DATE - DATES.END_DATE)) * 24) ||' HOURS '||
TRUNC((TO_NUMBER(DATES.START_DATE - DATES.END_DATE) * 24 - TRUNC(TO_NUMBER(DATES.START_DATE - DATES.END_DATE) * 24))*60) ||' MINUTES '||
ROUND((((TO_NUMBER(DATES.START_DATE - DATES.END_DATE) * 24 - TRUNC(TO_NUMBER(DATES.START_DATE - DATES.END_DATE) * 24))*60) -
(TRUNC((TO_NUMBER(DATES.START_DATE - DATES.END_DATE) * 24 - TRUNC(TO_NUMBER(DATES.START_DATE - DATES.END_DATE) * 24))*60)))*60) ||' SECONDS ' AS TIME_DIFFERENCE

FROM (
SELECT TO_DATE('20110102123421', 'YYYYMMDDHH24MISS') AS START_DATE, TO_DATE('20110101101723', 'YYYYMMDDHH24MISS') AS END_DATE FROM DUAL
)DATES




OUTPUT : 1 DAYS 2 HOURS 16 MINUTES 58 SECONDS

Just change the dates in the outer sub query and with your own time format.
Enjoy..

No comments:

Post a Comment