반응형

[오라클] 달력 기준으로 매월 세째주 토요일 일자 쿼리로 구하는 방법

실무에서 달력의 날짜나 요일을 구해야 하는일들이 간혹 발생 합니다. 

보통 달력테이블을 만들어 조회하는데 쿼리로 원하는 요일을 구할 수 있습니다.


방법은

  매달 월의 1일에서 14일을 더하면 달력 상에서 항상 3주차가 나오게 됩니다. 

  14일을 더한 날짜의 요일이 월요일이라면 5일을 더해주어야 하고 화요일이라면 4일을 더해주어야 토요일 일자가 나옵니다.

  요일을 구하는 함수는 TO_CHAR(날짜, 'D')이며 일요일 ~ 토요일까지 1~7 값을 반환합니다. 


WITH TEMP_DATE AS (

SELECT TO_DATE(YYYY||MM, 'YYYYMM') YYYYMM     

  FROM (SELECT LPAD(LEVEL, 2, '0') MM FROM DUAL 

        CONNECT BY LEVEL <= 12)

     , (SELECT TO_CHAR(LEVEL+2018) YYYY FROM DUAL 

        CONNECT BY LEVEL <= 1)

ORDER BY 1)


SELECT YYYYMM, YYYYMM + 14 + (7-TO_CHAR(YYYYMM, 'D')) "세째주 토요일"

  FROM TEMP_DATE


위에 있는 쿼리를 사용하면 됩니다. 

TEMP_DATE 를 정의하고 호출하면 됩니다. 이방법을 응용해서 2주차나 4주차에 적용해 볼수 있습니다. 

반응형

+ Recent posts