구글이나 네이버에서 해당 내용을 검색하면 많은 대답들이 나온다.

1. date 형이니깐 date형으로 바꿔서 해라~

2. PreparedStatement 사용시에는 ? 대신 sysdate로 바꾸고 값을 하나 줄여라

3. PreparedStatement 사용시에 setString 대신 setDate 또는 setTime 또는 setTimestamp 를 사용하라

등등


하지만!!! 내가 원한 대답들이 아냐 ㅜ.ㅜ 나랑 같은게 없다규!!!

난 3번 사용중이라규!!!!!


기존 ORACLE에 접근할때 odbc1.4.jar 를 사용하고 있었다.

이번에 필요한 기능때문에 odbc6.jar 로 업그레이드해서 사용중이었는데 기존에 잘되던 기능이 하나가 안되는 현상이 발견되었다.


참고로 A라는 DB에서 데이터를 받아와서 B에 데이터를 insert 하는 기능이다


PreparedStatement 를 사용해서 잘쓰고 있었는데 갑자기 뜬금없이 ORA-01861: literal does not match format string 요런 에러를 뱉는다....


미친거 아냐???? 와이?????


아무리 찾아봐도 어떠한 대답도 찾을수 없었다... 왜지??? 검색을 종나 못하는 찌질이였던가???

이러며 한탄하고 있을때 코드 한줄이 나를 꼬시고 있었다...


컬럼의 타입을 Integer 값으로 정해 놓고 Date 형이라면 ('91'의 숫자값을 갖는다.) 그 값을 setTimestamp 형태로 변환하여 

데이터를 입력시키는 형태의 로직이다.

그부분에서 odbc1.4.jar로 했을때와 odbc6.jar로 했을때의 값을 비교해 봤다....




이런 xxxxxxxx


뭐 이런!!!.... Integer값이 틀리다.... 뭐 이런경우가....

odbc1.4.jar 일때는 '91'이던게 odbc6.jar 일때는 '93'으로 바뀌어져 있었다.


아놔... 미쵸... 이걸로 몇시간을 삽질한건지...


여튼 중요한 정보니 다른분들도 나랑 같은 실수를 안했었기를 빌며.....ㅜ.ㅜ


나의 멍청함은 이걸로 끝내고 시퍼라......