반응형

Oracle 로고

오라클(Oracle)에서 TO_DATE 함수를 사용하려고 하는데, ORA-01843 지정한 월이 부적합합니다라는 문제가 발생하여 봤더니 해결 방법은 데이터에 00000000 데이터가 끼어 있어 발생한 케이스였다. 문제가 발생한 원인 중 하나이며, 이 글에서 해결방법을 제공하는 것이 무조건 정답이 아니다. 케이스에 따른 해결방법이니 참고하길 바란다.


목차

1. 문제 원인
2. 문제 해결 방법

1. 문제 원인

아래의 조회 쿼리와 같이, TEST01 테이블에서 FRDAT 컬럼에 있는 데이터를 'YYYYMMDD' 형식으로 데이터를 가져오고 싶어서 아래와 같이 쿼리를 만들었다.

SELECT TO_DATE(TEST01.FRDAT, 'YYYYMMDD')
  FROM TEST01

 

그랬더니, ORA-01843 지정한 월이 부적합합니다 라는 에러가 발생했고, 다른 데이터를 가지고 테스트를 했는데 별 이상이 없어 데이터를 봤더니 00000000 이라는 데이터가 끼어 있었다. 그래서 확인을 해봤다.

SELECT TO_DATE('00000000', 'YYYYMMDD')
  FROM DUAL;

 

역시나 데이터에 날짜형식에 맞지 않는 데이터가 끼어 있어 발생한 문제였다.

 

2. 문제 해결 방법

이 문제의 해결 방법은 근본적인 방법으로 데이터를 날짜 형식에 맞게 바꾸거나, 아니면 조회를 해올 때, 00000000 데이터가 아닌 것들만 가져오는 방법이다.

 

1) 00000000 데이터를 날짜 형식에 맞는 날짜 데이터 넣는다.

2) 조회를 할 때, 00000000이 아닌 조회 조건을 걸어 데이터를 가져온다.

 

이렇게 해서 문제를 해결할 수 있는데, 언제나 조금 찝찝한 느낌이다.


 

 

 

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기