주니봉
  • [Oracle] ADD_MONTHS 함수 사용시 ORA-01861 에러
    2022년 04월 11일 16시 19분 16초에 업로드 된 글입니다.
    작성자: 봉주니

    날짜 데이터를 다루기 위해 한달 전을 계산하기 위해 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;
    반응형
    댓글