I'm sure this must have already been raised as an idea, but having searched I couldn't see it. This would be very useful:
select to_char(numtodsinterval(20,'second'),'HH:MI:SS') from dual
(obviously only allow a format mask which make sense for an interval).
currently to achieve such a result it's long-winded.
select to_char(extract(hour from i), 'fm00')||
':' ||
to_char(extract(minute from i), 'fm00')||
':' ||
to_char(extract(second from i), 'fm00')
fmt
from (select numtodsinterval(20, 'second') i from dual)