간혹 특정 날짜 사이의 모든 날짜를 구해야 하는 경우가 있다.
예로, {오늘부터 일주일의 모든 날짜를 조회}와 같은 경우가 되겠는데
아래의 샘플을 응용하면 쉽게 조회할 수 있습니다.
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
'프로그램 > DB' 카테고리의 다른 글
[튜닝] 중첩 루프 조인 (USE_NL) (0) | 2022.11.03 |
---|---|
[ORACLE] 실수로 지운 데이터 조회 및 복구 (1) | 2022.09.26 |
[Oracle] TRUNC 함수 (0) | 2012.10.30 |
[Oracle] 여러 row를 한 줄로 출력 - (WMSYS.WM_CONCAT) (0) | 2012.09.18 |
[MySql] 여러 row를 한 줄로 출력 - (GROUP_CONCAT) (0) | 2012.09.18 |