ORA-01843: not a valid month 오류

2018. 8. 2. 16:29database/oracle

ORA-01843: not a valid month 오류

 

기존에 잘 되던 프로그램이 갑자기 위와 같은 오류를 발생시켰다.

 

달라진 것이라고는 오라클 서버를 바꿔준 것 밖에 없고 소스는 그대로였다.

 

오라클 12c 로 바꾼게 문제가 된것이라 판단이 된다.

 

해당 오류를 검색해 보니 NLS_DATE_FORMAT 이 맞지 않아 발생하는 오류라고 한다.

 

 

 

필자가 오류가 발생하는 상황은 특정 데이터를 insert 할 때 발생했다.

 

insert 할 대상 컬럼을 보니 date 타입은 없었고 Timestamp 타입이 있었다.

 

이 컬럼때문이라는 느낌이 들어 이 컬럼과 관련이 있는 소스들을 살펴보다 오류가 발생시키는 원인을 찾았다.

 



 

오류가 발생하는 소스는 다음과 같다.

 

1
2
3
Date today = new java.util.Date();
Timestamp timestamp = new Timestamp(today.getTime());
String timestampStr = timestamp.toString();
cs

3# 의 timestampStr을 Mybatis 를 이용해서 DB에 입력하는데 입력되는 컬럼의 타입은 Timestamp(6) 이였다.

 

그래서 해당 소스를 변경하였다.

 

1
2
Date today = new java.util.Date();
Timestamp timestamp = new Timestamp(today.getTime());
cs

String 이 아닌 Timestamp 타입으로 바로 DB에 입력하였더니 더이상 오류가 발생하지 않았다.

 

 

VO를 사용중이고 Mybatis를 활용하여 DB에 데이터를 insert 할 때 parameterType을 VO로 설정하였다면, VO에 컬럼과 매칭되는 변수의 타입을 Timestamp로 설정하면 된다.