Oracle에서 두 개의 시간 간격을 알아내는 것은 생각만큼 간단하지 않다. 때문에 사용자 Function 객체를 만들어 간편하게 이용하고 있다.
함수를 이용해 다음과 같은 질의를 한후 결과를 보게 되면 다음과 같다.
select interval(sysdate, sysdate - 1.1415)
from dual
----------------------------------------
1일 03시간 23분 46초
Function의 내부 코드는 다음과 같다.
create or replace function interval(p_sdate date, p_edate date)
return varchar2
is
v_tdate date;
v_sdate date;
v_edate date;
begin
v_sdate := p_sdate;
v_edate := p_edate;
if (v_sdate > v_edate) then
v_tdate := v_sdate;
v_sdate := v_edate;
v_edate := v_tdate;
end if;
return to_number(substr(numtodsinterval(
(v_edate - v_sdate) * 60*60*24,
’second’), 2, 9), ‘999999990′) || ‘일 ‘ ||
translate(to_char(
to_date(’20000101000000′, ‘yyyymmddhh24miss’) +
numtodsinterval(
(v_edate - v_sdate) * 60*60*24, ’second’),
‘hh24[] mi/ ss:’), ‘[]/:’, ‘시간분초’);
exception
when others then return ”;
end;
/

No comments yet
Comments feed for this article