SELECT
start_date AS 주시작일자,
end_date AS 주종료일자
FROM (
SELECT
TRUNC(TO_DATE('2024-01-01', 'YYYY-MM-DD') + (LEVEL - 1) * 7, 'D') AS start_date,
TRUNC(TO_DATE('2024-01-01', 'YYYY-MM-DD') + (LEVEL - 1) * 7 + 6, 'D') AS end_date
FROM DUAL
CONNECT BY TO_DATE('2024-01-01', 'YYYY-MM-DD') + (LEVEL - 1) * 7 <= TO_DATE('2024-12-31', 'YYYY-MM-DD')
)
WHERE TO_CHAR(start_date, 'D') = 1 -- 주의 시작일을 월요일(1)로 지정
ORDER BY start_date;
이쿼리는 일요일이 주시작일으로 되어있는데 월요일을 주 시작일로 수정하고 싶은데 어떻게 해야할까요?ㅠㅠ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | -- 1. 일요일 기준(D) 주차 -- SELECT sdt + LEVEL * 7 - 7 sdt , sdt + LEVEL * 7 - 1 edt FROM ( SELECT TRUNC(TO_DATE( '2024-01-01' , 'yyyy-mm-dd' ), 'd' ) sdt , TRUNC(TO_DATE( '2024-12-31' , 'yyyy-mm-dd' ), 'd' ) edt FROM dual ) CONNECT BY LEVEL <= (edt - sdt) / 7 + 1 ; -- 2. 월요일 기준(IW) 주차 -- SELECT sdt + LEVEL * 7 - 7 sdt , sdt + LEVEL * 7 - 1 edt FROM ( SELECT TRUNC(TO_DATE( '2024-01-01' , 'yyyy-mm-dd' ), 'iw' ) sdt , TRUNC(TO_DATE( '2024-12-31' , 'yyyy-mm-dd' ), 'iw' ) edt FROM dual ) CONNECT BY LEVEL <= (edt - sdt) / 7 + 1 ; |