본문 바로가기

Error

[오라클 Error] ORA-01861: literal does not match format string

728x90

ORA-01861: literal does not match format string

구WAS에서는 잘 돌아가는 구문이 신WAS에서는 이렇게 종종 오라클 에러를 내뱉는다..


 원인

날짜 변환하는 오라클 함수 TO_DATE를 쓰는데 두 번째 인자를 넣지 않아서 SQL에서 문자열 형식이 맞지 않다는 ORA-01861을 에러로 뱉음. 데이터베이스 세팅에 따라 기본 날짜 타입이 달라서 서버 환경에 따라 다르게 나오는 것이다. 

아래 예시와 같이 TO_DATE 함수 안에 어떤 형식으로 날짜 타입을 받을 것인지 빠져 있다.

-- 틀린 SQL 예시
SELECT TO_CHAR(TO_DATE(REQ_DATE),'YYYY-MM-DD') FROM GGOYO_TB

 

 

 

 해결

TO_DATE (컬럼, 날짜타입)을 꼭 같이 써줘야 한다.

-- 옳은 SQL 예시
SELECT TO_CHAR(TO_DATE(REQ_DATE, 'YYYYMMDD'),'YYYY-MM-DD') FROM GGOYO_TB