728x90

오랜만에 개발관련 포스팅.. 그동안 얼마나 일도 안하고 땡가땡가 놀기만 한 것이냐?? 네이넘~~~!!!

오랜만에 하니까 에러도 마구마구 나주시고,

그래서 이렇게 포스팅도 하고,

이번 에러는 뭐시냐????

TOAD 에서 실행하면 정상적으로 작동하는 쿼리가 자바에서 호출할때는 오류가 난다!!!

바로 이거다!!!

왜?? 대체 왜???

이 원인을 찾기 위해 얼마나 힘들었던가..

자꾸만 ORA-01861: literal does not match format string 오류가 난다. ㅠㅠ

내가 실행하고자 했던 쿼리는 바로 이거다!!

SELECT TO_CHAR(ADD_MONTHS(open_date, months), 'yyyymmdd') close_date,

TO_CHAR (SYSDATE, 'yyyymmdd') today,
FROM pay_t

이 쿼리에서 중요한 부분은 바로 빨간색으로 표시한 ADD_MONTHS (open_date, months)

여기서 왜 오류가 났느냐 하면,

open_date는 그냥 VARCHAR2 (8 Byte) 형데이터 라서 자바에서는 DATE형으로 인식하지 않는다.

그런데 여기서 DATE 형 함수 ADD_MONTHS를 사용하니까(자바는 DATE 형이 들어가야 할 자리에 VARCHAR가 들어갔다고 생각함) 당연히 데이터형이 맞지 않는다고 에러를 발생시킨거다.

따라서~~ 쿼리를 수정해줘야 한다.

어떻게???

SELECT TO_CHAR (ADD_MONTHS (TO_DATE (open_date, 'yyyymmdd'), months),
'yyyymmdd' ) close_date,
TO_CHAR (SYSDATE, 'yyyymmdd') today
FROM pay_t

바로 이렇게 수정한다. 여기에서 또 주의할 사항!!!!

두꺼비에서는 자리수만 맞는다면, TO_DATE (open_date) 이렇게만 써줘도 쿼리 실행하는데 문제가 없다.

하지만 자바애플리케이션에서는 반드시 데이터의 형식을 써줘야 한다. 'yyyymmdd' 요런거~

안써주면 또 똑같은 에러를 마구 내주시니 주의하시라~!

728x90

'JAVA' 카테고리의 다른 글

ORA-01722 : invalid number  (0) 2012.07.29
For input string: ""  (0) 2012.07.29
자바 integer string 형변환  (0) 2012.07.29
Package name must have at least two identifiers  (0) 2012.07.29
안드로이드 개요  (0) 2012.07.29

+ Recent posts