[Oracle 기초] level을 이용한 날짜 및 시간 dummy 테이블 만들기
오늘은 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을 이용하여 날짜나 시간에 대한 값을 자동으로 생성해주는 임시 테이블을 만드는 방법을 알아보았습니다.
'Oracle' 카테고리의 다른 글
[Oracle 기초] OUTER JOIN (0) | 2018.12.31 |
---|---|
[Oracle 기초] DECODE 활용하기 (0) | 2018.12.30 |
[Oracle 기초] INSERT 에서 서브쿼리 사용하기 (0) | 2018.12.24 |
[Oracle 기초] 숫자 자동 증가 (Auto Increment) (0) | 2018.12.24 |
[Oracle 기초] sysdba 비밀번호 분실 (0) | 2018.12.24 |