말랑말랑제리스타일

[Oracle]Ora-01861 에러 발생 원인과 처리방법 본문

데이터베이스/Oracle SQL

[Oracle]Ora-01861 에러 발생 원인과 처리방법

제리제리 2022. 1. 24. 15:34

[ERR0000]ORA-01861: literal does not match format string

Oracle DB를 프로그램에서 쓰다 보면 정말 자주 발생하는 Oracle 에러 중 하나입니다.

이 Oracle 에러가 상당히 골치아픈 이유는 토드나 SQL 디벨로퍼에서 쿼리로 실행하면 발생하지 않는데 프로그램에서 프로시저로 호출시 발생하기 때문이죠.

그럼 자세히 Ora-01861 에러의 발생 원인과 처리 방법을 알아보겠습니다.

1. Ora-01861 에러의 발생 원인

텍스트에 나온 것처럼 문자열이 포맷 스트링과 매칭되지 않는 에러입니다.

제가 이 Ora-01861 에러 많이 봤는데 발생 원인의 90프로가 날짜형을 문자열 형과 비교할 때 발생했습니다.

Oracle DB에서 날짜 데이터를 Varchar2(8)이나 Varchar2(14) 타입의 문자열 데이터로 만들어 넣는 경우가 많은데 이런 경우 테이블 A의 Varchar2(8) 인 데이터와 테이블 B의 Date 타입의 데이터를 비교하거나 조인할 때 발생하는거죠.

 

2. Ora-01861 에러의 처리 방법

처리 방법은 간단합니다. 날짜로 된 데이터를 TO_CHAR(날짜형데이터,'YYYYMMDD') 로 바꿔서 비교하거나 문자열 데이터를 TO_DATE(문자열데이터,'YYYYMMDD')로 치환해서 조인하거나 비교해주면 됩니다.

만약 VARCHAR2(14) 형태라면 'YYYYMMDDhhmmss'로 비교해줄 수 있겠습니다.

반응형
Comments