간혹 특정 날짜 사이의 모든 날짜를 구해야 하는 경우가 있다.

 

예로, {오늘부터 일주일의 모든 날짜를 조회}와 같은 경우가 되겠는데

아래의 샘플을 응용하면 쉽게 조회할 수 있습니다.

 SELECT TRUNC((SYSDATE + 3) + (LEVEL - 1)) AS DATE_YMD
   FROM DUAL
CONNECT BY LEVEL <= (TRUNC(SYSDATE + 7) - TRUNC(SYSDATE + 3)) + 1

위 쿼리는 현재(현재 : 2021-02-10)일 기준 3일 후부터 7일까지의 모든 날짜를 출력하는 쿼리이다.

CONNECT BY LEVEL을 사용함으로써 쉽게 원하는 데이터 조회가 가능하다.


추가로 특정 일자 구간의 모든 일자를 구하는 쿼리는 다음과 같이 작성할 수 있다.

 SELECT TRUNC(TO_DATE('20210210', 'YYYYMMDD') + (LEVEL - 1)) AS DATE_YMD
   FROM DUAL
CONNECT BY LEVEL <= TO_DATE('20210217', 'YYYYMMDD') - TO_DATE('20210210', 'YYYYMMDD') + 1

 

+ Recent posts