CREATE OR REPLACE FUNCTION to_hms (i_days IN number)
RETURN varchar2
IS
BEGIN
RETURN TO_CHAR (TRUNC (i_days)) || ' days ' ||
TO_CHAR (TRUNC (SYSDATE) + MOD (i_days, 1), 'HH24:MI:SS');
END to_hms;
/
-- 1.2345 days
SELECT to_hms (1.2345) FROM DUAL;
1 days 05:37:49
SELECT to_hms (SUM (x.dys))
FROM (SELECT TO_DATE (TO_CHAR (SYSDATE, 'dd-mon-yyyy') || '10:00', 'dd-mon-yyyyhh24:mi')
- TO_DATE (TO_CHAR (SYSDATE, 'dd-mon-yyyy') || '8:00', 'dd-mon-yyyyhh24:mi') dys
FROM DUAL
UNION ALL
SELECT TO_DATE (TO_CHAR (SYSDATE, 'dd-mon-yyyy') || '13:00', 'dd-mon-yyyyhh24:mi')
- TO_DATE (TO_CHAR (SYSDATE, 'dd-mon-yyyy') || '11:00', 'dd-mon-yyyyhh24:mi')
FROM DUAL
UNION ALL
SELECT TO_DATE (TO_CHAR (SYSDATE, 'dd-mon-yyyy') || '16:00', 'dd-mon-yyyyhh24:mi')
- TO_DATE (TO_CHAR (SYSDATE, 'dd-mon-yyyy') || '14:00', 'dd-mon-yyyyhh24:mi')
FROM DUAL) x;
0 days 06:00:00