" ORA-01839: 지정된 월에 대한 날짜가 부적합합니다 "란 에러에 대해서 질문좀 드리겠습니다. 0 4 12,918

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일이 들어갈 경우 에러가 나는데요..

저런 데이터를 찾아내는 조건은 어떻게 주면 될까요?

by 느훼훼 [2012.03.09 16:37:14]
실행시킨 쿼리하고 테이블엔 어떤식으로 데이터가 들어가있는지를 내용에 적으세요.
질문글만 보면 잘 몰라요.

by 프리어 [2012.03.09 17:09:40]

죄송합니다. 다시 수정했습니다.;;;;

by 손님 [2012.03.09 17:51:48]
 
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'));

by 프리어 [2012.03.09 18:26:00]

오 죽이네요.. ~!   감사합니다.. ㅋㅋ 손님.
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입