WITH T AS (SELECT TO_DATE('2016-01-04', 'YYYY-MM-DD') DT FROM DUAL) SELECT CASE WHEN DT < TRUNC(TRUNC(DT, 'yyyy') + 6, 'iw') THEN TRUNC((LAST_DAY(DT - 7) - TRUNC(TRUNC(LAST_DAY(DT - 7), 'yyyy') + 6, 'iw')) / 7) + 1 ELSE TRUNC((DT - TRUNC(TRUNC(DT, 'yyyy') + 6, 'iw')) / 7) + 1 END WEEK FROM T 마농님은 역시나 간단하시네요-0-;