본문 바로가기

Database/ORACLE

오라클 날짜 데이터 | 일 시 분 초 로 나타내는 방법

오라클 날짜 데이터 | 일 시 분 초 로 나타내는 방법

안녕하세요.
오늘은 오라클 간만에 팁을 공유 하려고 작성을 합니다.
날짜 데이터 사이의 차이를 구하는 SQL을 작성 해보았습니다.
먼저 아래와 같이 테스트용 테이블과 연습용 데이터를 넣어보겠습니다.

테스트 데이터 입력

아래 SQL을 실행하여 테스트 데이터를 입력합니다.

create table time_gap
(
    start_Date date,
    end_Date   date
);

INSERT INTO TIME_GAP (START_DATE, END_DATE) VALUES (TO_DATE('2022-03-21 10:43:42', 'YYYY-MM-DD HH24:MI:SS'), TO_DATE('2022-03-23 10:48:43', 'YYYY-MM-DD HH24:MI:SS'));
INSERT INTO TIME_GAP (START_DATE, END_DATE) VALUES (TO_DATE('2022-03-15 22:12:03', 'YYYY-MM-DD HH24:MI:SS'), TO_DATE('2022-03-23 10:49:20', 'YYYY-MM-DD HH24:MI:SS'));
INSERT INTO TIME_GAP (START_DATE, END_DATE) VALUES (TO_DATE('2022-03-23 06:49:22', 'YYYY-MM-DD HH24:MI:SS'), TO_DATE('2022-03-23 10:49:21', 'YYYY-MM-DD HH24:MI:SS'));

자, 이 데이터로 실습을 하겠습니다.

테스트 데이터

 

 

 

일, 시, 분, 초 출력

자, 그럼 위 데이터를 이용해서 각 일, 시, 분, 초 간격을 출력 해보겠습니다.
SQL은 다음과 같죠.

select START_DATE
     , END_DATE
     , trunc((END_DATE - START_DATE), 0)                as day
     , trunc((END_DATE - START_DATE) * 24, 0)           as hour
     , trunc((END_DATE - START_DATE) * 24 * 60, 0)      as min
     , trunc((END_DATE - START_DATE) * 24 * 60 * 60, 0) as second
from time_gap;

결과는 다음과 같이 출력 됩니다.

결과 출력

이렇게 하면 몇일이 차이가 나는지, 시간으로 하면 그게 얼만큼인지 등등을 알 수 있습니다. 하지만, 어떠한 한 단위로 출력이 되는것이고, <2시간 20분 차이가 난다> 이런식으로 이야기 하고있는건 아닙니다. 그렇다면 이번에는 몇일, 몇분, 몇초가 차이나는지를 유연하게 볼 수 있도록 출력 해보겠습니다.

select day
     , hour - (day * 24)   as hour
     , min - (hour * 60)   as min
     , second - (min * 60) as second

from (select START_DATE
           , END_DATE
           , trunc((END_DATE - START_DATE), 0)                as day
           , trunc((END_DATE - START_DATE) * 24, 0)           as hour
           , trunc((END_DATE - START_DATE) * 24 * 60, 0)      as min
           , trunc((END_DATE - START_DATE) * 24 * 60 * 60, 0) as second
      from time_gap)
;

결과

이렇게 보면 이젠 2시간 5분 1초 차이가 난다 이렇게 확인 할 수 있게 됩니다.

감사합니다.

by.sTricky