by 프리어 [SQL Query] ORA-01839 [2012.03.09 16:24:47]
ORA-01839: 지정된 월에 대한 날짜가 부적합합니다
위와같은 에러가 뜨는데요..인터넷에 찾아보니까 예를 들어서 2월은 28일까지 날짜가 있는데 30일이라고 되어 있을경우
그것을 to_date로 형변환 할경우 생기는 에러라고 나왔던데요.. 형식에 맞지 않는 데이터만 찾으려면 어떻게 조건을 넣어야 할까요?
만약에 어느해에 5월은 30일까지 있는데 31일로 들어간 데이터같은거 찾아내는거 말이죠..
당최 모르겠네요..
-----------------------------------------------------------------------------------------------------------------
WITH DATE_SRC AS(
SELECT '20101020' FRDT FROM DUAL
UNION SELECT '20120931' FRDT FROM DUAL
UNION SELECT '20101020' FRDT FROM DUAL
UNION SELECT '20100201' FRDT FROM DUAL
UNION SELECT '20100230' FRDT FROM DUAL
UNION SELECT '20101020' FRDT FROM DUAL
)
SELECT TO_DATE(FRDT,'YYYYMMDD') FROM DATE_SRC;
--------------------------------------------------------------------------------------------------------
위와 같은 경우일경우 에러가 나는데요.
20100230과 같이 2월에 28일까지 있는데 30일이 들어갈 경우 에러가 나는데요..
저런 데이터를 찾아내는 조건은 어떻게 주면 될까요?
WITH DATE_SRC AS( SELECT '20101020' FRDT FROM DUAL UNION SELECT '20120931' FRDT FROM DUAL UNION SELECT '20101020' FRDT FROM DUAL UNION SELECT '20100201' FRDT FROM DUAL UNION SELECT '20100230' FRDT FROM DUAL UNION SELECT '20101020' FRDT FROM DUAL ) SELECT FRDT FROM DATE_SRC WHERE NOT EXISTS (SELECT 1 FROM DUAL WHERE TO_CHAR(TO_DATE('20100101', 'YYYYMMDD')+LEVEL, 'YYYYMMDD') = FRDT CONNECT BY LEVEL <= TO_DATE('20121231', 'YYYYMMDD') - TO_DATE('20100101', 'YYYYMMDD'));