[Oracle 기초] level을 이용한 날짜 및 시간 dummy 테이블 만들기

Posted by 열정보이
2018. 12. 30. 17:15 Oracle

오늘은 Oracle의 level을 이용해 날짜와 시간에 대한 dummy 테이블을 만들어보겠습니다.


저희 회사의 과장님이 Oracle을 이용한다면 세상의 모든것을 표현할 수 있다고 하셨는데, 공부를 할 수록 그 말이 맞구나 라는 생각이 듭니다..


SQL로는 for문을 사용하는데 어려움이 있어 프로시저를 사용해왔었죠.


하지만!


Level을 사용한다면 for문처럼 활용할 수 있습니다.


1
2
SELECT LEVEL FROM DUAL
CONNECT BY LEVEL <= 10;
cs

CONNECT BY LEVEL <= ? 와 같이 사용한다면, 1부터 ? 까지 LEVEL의 값이 증가하게 됩니다.


어때요 참 쉽죠?!


이러한 level을 이용한다면, 우리가 날짜나 시간에 대해서 dummy table을 만들 수 있습니다.


1일부터 원하는 월의 말일까지 나타내는 테이블을 만들고 싶을 때 다음과 같이 사용하면 됩니다.


1
2
3
SELECT TO_DATE('20181201','YYYYMMDD'+ (ROWNUM -1) AS TEMP_CAL
FROM DUAL
CONNECT BY LEVEL <= (TO_DATE('20181231','YYYYMMDD'- TO_DATE('20181201','YYYYMMDD'+ 1);
cs



너무나 쉽죠?!


시간은 어떻게 할까요?


1
2
3
SELECT TO_TIMESTAMP('01' + (ROWNUM -1|| ':00','HH24:MI') AS TEMP_TIME
FROM DUAL
CONNECT BY LEVEL <= 23;
cs


전 이렇게 했습니다.



그럼 지금까지 level을 이용하여 날짜나 시간에 대한 값을 자동으로 생성해주는 임시 테이블을 만드는 방법을 알아보았습니다.