오랜만에 개발관련 포스팅.. 그동안 얼마나 일도 안하고 땡가땡가 놀기만 한 것이냐?? 네이넘~~~!!!
오랜만에 하니까 에러도 마구마구 나주시고,
그래서 이렇게 포스팅도 하고,
이번 에러는 뭐시냐????
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' 요런거~
안써주면 또 똑같은 에러를 마구 내주시니 주의하시라~!
'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 |