본문 바로가기

ORACLE SQL

[Oracle] SQL - interval 데이터타입 활용하기

728x90

공부를 하다가 보니 table을 생성할 때, datatype으로

'interval year(3) to month'

'interval day(3) to second'

라고 선언해서 사용하는 것을 보고 이번 포스팅을 하게 되었습니다.

 

1
2
3
4
5
create table cc(
    today date,
    year1 interval year(3) to month,
    day1 interval day(3) to second
    );
cs

 

위처럼 cc 라는 table을 생성하였습니다.

 

변수이름 : year1  - 데이터타입 : interval year(3) to month

에는 실제 데이터를 insert할때

interval '개월간격' to month(3)

interval '연간격' to year(3)

를 넣을 수 있습니다.

 

변수이름 : day1  - 데이터타입 : interval day(3) to second

에는 실제 데이터를 insert할때

interval '초간격' to second(3)

interval '분간격' to minute(3)

interval '시간간격' to hour(3)

interval '일간격' to day(3)

를 넣을 수 있습니다.

 

 

1
2
3
4
5
6
insert into cc
    values(sysdate, interval '12' month(3), interval '60' second(3));
insert into cc
    values(sysdate, interval '24' month(3), interval '120' second(3));
insert into cc
    values(sysdate, interval '36' month(3), interval '240' second(3));
  cs

 

첫번째 insert를 보면,

today 에는 현재 날짜와시간을 담고있는 sysdate

year1 에는 interval '12' month(3)

day1 에는 interval '60' second(3)

넣어 insert하였습니다.

 

 

 

interval '12' month(3) 에서 '12'는 간격을 12달로 하겠다는 것을 의미합니다. 그리고 month() 안에 숫자 3은 정확도를 나타낸다고 하는데..잘 모르겠습니다.ㅎㅎ

알려주시면 수정하겠습니다.

 

interval '60' second(3) 에서 '60'은 간격을 60초로 하겠다는 것을 의미합니다.

 

1
select * from cc;
cs

 

그래서 위처럼 select 문을 적고 명령문 실행(Ctrl+Enter)를 하게되면

 

 

위 처럼 조회를 하게되면 cc 테이블에 데이터가 저장된 것을 볼 수 있습니다.

 

1
2
3
4
   select to_char(today,'yyyy-MM-DD HH24:MI:SS'"char_(today)"
           to_char(today+year1,'yyyy-MM-DD HH24:MI:SS'"char_(today + year01)",
           to_char(today+day1,'yyyy-MM-DD HH24:MI:SS'"char_(today+day01)"
    from cc;
cs

 

이 데이터를 위처럼 select하여 조회하여 활용할 수 있습니다. 위의 select 문을 명령문 실행(Ctrl+Enter)를 하면

 

 

위 처럼 결과가 나옵니다. 첫번째 행(row)은 year1에  12달 간격을 갖고 있고 day1에는 60초 간격을 갖고 있습니다.

그래서  today+year1을 하게되면 2021년 3월 28일에서 12달을 더한 2022년 3월 28일을 보여줍니다.

또한, today+day1을 하게되면 15시57분16초에서 60초를 더한 15시58분15초를  보여줍니다.

 

즉, 이렇게 interval을 활용하였을 때 각 행(row)마다 다른 간격을 갖도록 하여 계산할 수 있게 됩니다.

어떻게 활용할지 아직 생각해보지 않았지만 이후 프로젝트에서 활용하게 된다면 어떤식으로 활용하였는지 공유드리도록 하겠습니다.