Вы можете попробовать с этим SQL:
select start_time, end_time,
(CASE WHEN start_time is not null then trunc(start_time-end_time)||':'||
lpad(trunc(mod((start_time-end_time)*24, 24)),2,'0')||':'||
lpad(trunc(mod((start_time-end_time)*24*60,60)),2,0) else '' end) duration
from
(select to_date('7/11/2011 21:37','DD/MM/YYYY HH24:MI:SS') start_time,
to_date('7/11/2011 13:31','DD/MM/YYYY HH24:MI:SS') end_time
from dual
union all
select null start_time,
to_date('04/08/2011 20:13:43','DD/MM/YYYY HH24:MI:SS') end_time
from dual
)
Если вам нужна длительность в абсолютных терминах, вы можете поставить функцию ABS.