ORA-01861: literal does not match format string

Photo by Michael Dziedzic on Unsplash

2, 3년 전 ETL 비슷한 프로그램을 개발해서 여러 기관에 있는 서버에 배포한 적이 있었다. 각각 서버나 DBMS 환경이 다르긴 했지만, 운영하는데 별 문제는 없었다. 그렇게 운영하다가 신규 기능을 배포하게 되었는데, 유독 한 곳에서만 ORA-01861 이 발생했다.

java.sql.SQLException: ORA-01861: literal does not match format string

처음에는 DBMS에 대한 의심을 하지 못했다. 서버 환경이 비슷한 다른 기관들은 이미 적용해서 운영 중이었기 때문이다. 인터넷이 안되는 기관이라 검색도 못해보고, 후일을 기약하며 철수했던 기억이 난다. 며칠 뒤 별 준비없이 다시 방문을 했는데, 이상없이 동작 하는게 아닌가. 뭐에 홀린 듯 했지만 바쁜 상황이었던 터라 그냥 지나갔었다.

오늘 검색을 하다가 우연히 당시의 일을 떠올리게 되었다. 오라클에서 TO_DATE, TO_CHAR 함수를 사용할 때 형식을 지정하지 않는 경우, NLS_DATE_FORMAT 에 따라 위와 같은 오류가 발생할 수 있다는 것이다. 유추해 보건대 누군가 공교롭게도 마침 그 시점에 설정을 바꾸었다가, 원복을 시킨게 아닐까 싶다.

아무튼 오늘의 결론은 오라클에서 TO_DATE, TO_CHAR을 사용한다면 반드시 형식을 지정해야 한다는 것!

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

위로 스크롤