Конвертация данных в PL/SQL
Есть два запроса, связанные UNION, выдающие результат в формате char, необходимо их сложить.
Результаты выглядят в виде времени, например, "00:02:55" и "01:44:01". Как их сложить?
При попытке обычного сложения выдает ошибку:
"Invalid number"
Как быть?
Ответы (1 шт):
Автор решения: another_login
→ Ссылка
with t as (
select '00:02:55' some_time from dual union all
select '01:44:01' from dual
)
select numtodsinterval(sum(to_char(to_date(some_time,'hh24:mi:ss'),'sssss')),'second') total_time
from t
результат:
| TOTAL_TIME |
|---|
| +000000000 01:46:56.000000000 |
UPD: Если нужна меньшая точность, можно конвертировать:
with t as (
select '00:02:55' some_time from dual union all
select '01:44:01' from dual
)
select cast(numtodsinterval(sum(to_char(to_date(some_time,'hh24:mi:ss'),'sssss')),'second') as interval day(2) to second(0)) total_time
from t
результат:
| TOTAL_TIME |
|---|
| +00 01:46:56 |