Преобразуйте значения в секунды, используя арифметику:
select hhmmss, floor(hhmmss / 10000) * 60 * 60 + (mod(hhmmss, 10000) / 100) * 60 + mod(hhmmss, 100)
from (select 235000 as hhmmss from dual) x
Затем вычтите секунды. Это даст вам продолжительность в секундах.
С именами столбцов это будет выглядеть следующим образом:
select ( (floor(end / 10000) * 60 * 60 + (mod(end, 10000) / 100) * 60 + mod(end, 100)) -
(floor(start / 10000) * 60 * 60 + (mod(start, 10000) / 100) * 60 + mod(start, 100))
) as diff_seconds
Чтобы преобразовать это обратно в строку, вы можете использовать to_char()
:
select to_char(date '2000-01-01' + diff_seconds * interval '1' second, 'HH24:MI:SS')