[Oracle] ORA-01843 지정한 월이 부적합합니다

Q0. 개요

다음 오라클 에러에 대해서 알아보도록 하자.

ORA-01843: 지정한 월이 부적합합니다 (not a valid month)

 

쿼리 작업 이후에 로컬에서 톰캣을 재구동했을 때, ORA-01843이라는 에러가 발생되는 경우가 있다.

이는 작성된 SQL의 출력물의 날짜 형식이 잘못되었거나 옳바르지 않은 경우이다.

 

Q2. 날짜와 관련된 주요 기능

TO_CHAR는 날짜를 문자열로 변환하는 함수. TO_CHAR(SYSDATE, 'YYYYMMDD')
TO_DATE는 문자열을 날짜로 변환하는 함수. TO_DATE('2023-11-21', 'YYYYMMDD')
ALTER SESSION SET NLS_LANGUAGE = 'KOREAN'; --DB세션 한국어로 설정
ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD'; --DB세션 해당 포맷으로 설정

위 기능 중에서 TO_DATE('2023-13-30', YYYY-MM-DD HH24:MI:SS')와 같이 실행하거나 

TO_DATE('2023-00-01', 'YYYYMMDD')와 같이 실행된다면 존재하지 않는 월 데이터를 변환할 수 없기 때문에 다음과 같은 에러가 발생한다.

 

Q3. 결론적으로

이런 데이터가 입력될 때 화면에서 사전 Validate 처리를 하거나

계산을 통해  쿼리에서 추출되는경우에는 서버 단 예외처리를 하는 수 밖에 없다.