1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| with donneeReq as
(select 0.5 as nb from dual union all
select 140.75 from dual union all
select -0.5 from dual union all
select -145.25 from dual union all
select 13 from dual union all
select -1 from dual union all
select -0.99999 from dual union all
select -34 from dual
)
select
nb,
CASE
WHEN nb > -1 and nb < 0 THEN
'-'
END
||
to_char(
extract(day FROM numtodsinterval(nb,'HOUR'))*24+
extract(hour FROM numtodsinterval(nb,'HOUR'))
)
||
CASE
WHEN abs(extract(minute FROM numtodsinterval(nb,'HOUR'))) != 0 THEN
':'||to_char(abs(extract(minute FROM numtodsinterval(nb,'HOUR'))))
END
FROM donneeReq |