SELECT TO_CHAR(BASE_YMD,'mm') SET_MON
,CEIL((CURR_YMD - BASE_YMD + 1) / 7) SET_WEEK
,TO_CHAR(TRUNC(MIN(CURR_YMD), 'IW')+0,'YYYY/MM/DD') AS SET_WEEKSTART
,TO_CHAR(TRUNC(MIN(CURR_YMD), 'IW')+6,'YYYY/MM/DD') AS SET_WEEKEND
FROM (
SELECT CURR_YMD
,CASE WHEN CURR_YMD < NEXT_DAY(TRUNC(CURR_YMD,'mm') - 1,2)
THEN NEXT_DAY(TRUNC(ADD_MONTHS(CURR_YMD,-1),'mm')- 1,2)
ELSE NEXT_DAY(TRUNC( CURR_YMD, 'mm')- 1,2)
END BASE_YMD
FROM (
SELECT
CASE WHEN '20131007' IS NULL
THEN
TO_DATE(TO_CHAR(SYSDATE,'YYYYMM'),'YYYYMM')+LEVEL-1
ELSE
TO_DATE(SUBSTR('20131007',0,6),'yyyymm')+LEVEL-1
END CURR_YMD
FROM DUAL
CONNECT BY LEVEL <= ADD_MONTHS(TO_DATE(SUBSTR('20131007',0,6),'yyyymm'),1)
- TO_DATE(SUBSTR('20131007',0,6),'yyyymm')
)
)
GROUP BY TO_CHAR(BASE_YMD,'mm'),CEIL((CURR_YMD - BASE_YMD + 1) / 7)
ORDER BY SET_MON ,SET_WEEK
=====================================================================
안녕하세요. 이곳에서 도움을 많이 받고 있는 유저 입니다.
이곳 정보를 통해 월/주차/주시작일/주마지막날 날짜를 구하는 쿼리를 구했습니다.
토드에서는 아무런 문제가 없는데..
웹서버(톰캣)에서는 .리터럴이 형식 문자열과 일치 하지 않음 이라면서 ORA-01861 에러를 뱉어냅니다..
왜 그런걸까요..이유를 모르겠네요...
아시는 분 도움 주시기 부탁드립니다..
특정 날짜를 받아서 그 날짜가 속한 주가 그 달의 몇주차 이고 그 주일은 몇일부터 몇일까지 라고 구하는건데..
매주는 (월요일~일요일) 로 구하고 있습니다..
도대체 이유가 멀까요..쿼리가 문제 인가요???
더 간결하게 구할수 있는지..도움 부탁드립니다..
감사합니다.
|