Oracle

[Oracle] ADD_MONTHS 함수 사용시 ORA-01861 에러

봉주니 2022. 4. 11. 16:19

날짜 데이터를 다루기 위해 한달 전을 계산하기 위해 ADD_MONTHS 를 사용할 때,

SQL툴에서는 정상적으로 동작하고, 프로시저 컴파일에도 문제가 없지만 실제로 서버에서 동작할 때 에러를 발생시키는 경우 이다.

 

String 으로 된 날짜 '20220411'을 사용할 때,

 

SELECT TO_CHAR(ADD_MONTHS('20220411',-1),'YYYYMMDD') FROM DUAL;

결과 :

20220311

로 프로시저가 동작하는데, 실제 서버에서 아래와 같이 에러를 발생시킨다.

 

ORA-01861: 리터럴이 형식 문자열과 일치하지 않음

 

 

따라서, TO_DATE를 사용해서 정상쿼리로 동작하게 만들었다.

SELECT TO_CHAR(ADD_MONTHS(TO_DATE('20220411','YYYYMMDD'),-1),'YYYYMMDD') FROM DUAL;

 

 

 

 

 

주의 !!

TO_DATE 뒤에 타입을 지정하지 않을 경우에도 에러가 발생한다.

SELECT TO_CHAR(ADD_MONTHS(TO_DATE('20220411'),-1),'YYYYMMDD') FROM DUAL;
반응형