SELECT INITCAP(TO_CHAR (MIN (D) + 6, 'MON.DD','NLS_DATE_LANGUAGE=AMERICAN'))
|| ' - '
|| INITCAP(TO_CHAR (MAX (D) + 6, 'MON.DD','NLS_DATE_LANGUAGE=AMERICAN'))
AS WEEK_DAY
FROM ( SELECT TO_DATE ('20140101', 'YYYYMMDD') + (ROWNUM - 1) d
FROM DUAL
CONNECT BY LEVEL <= 366)
WHERE TO_CHAR (d, 'ww') BETWEEN 4 AND 4
중간에 해당 연도의 시작일 을 넣고(여기서는 20140101),
마지막에 주차를 넣으면 (여기에서는 4) 해당 주차의 시작일과 마지막 일자를 보여준다.
결과 :
WEEK_DAY
--------------
Jan.28 - Feb.03
수정본 :
SELECT INITCAP (TO_CHAR (MIN(SDT), 'MON.DD', 'NLS_DATE_LANGUAGE=AMERICAN'))
|| ' - '
|| INITCAP (TO_CHAR (MAX(EDT), 'MON.DD', 'NLS_DATE_LANGUAGE=AMERICAN'))
AS WEEK_DAY
FROM ( SELECT DENSE_RANK () OVER (ORDER BY (TRUNC (dt, 'iw'))) AS WW,
MIN (dt) AS SDT,
MAX (dt) AS EDT
FROM ( SELECT TO_DATE ('20140101', 'YYYYMMDD') + (ROWNUM - 1) dt
FROM DUAL
CONNECT BY LEVEL <= 365)
GROUP BY (TRUNC (dt, 'iw')))
WHERE WW BETWEEN 1 AND 53
위에꺼 영 이상해서 수정한 버전.