개인적인 정리

ORA-01843: 지정한 월이 부적합합니다. 본문

DB/ORACLE

ORA-01843: 지정한 월이 부적합합니다.

yeon.Biju 2019. 4. 17. 14:42

ORA-01843: 지정한 월이 부적합합니다.

 

 

프로그램을 통해서 데이타를 insert 또는 update 하는 경우에

문자열을 입력받아서 날짜 형태로 저장을 할 때 발생.

UPDATE 테이블 명

 SET 필드명 =TO_DATE( '2019-04-17 16:00' /**P*/,'YYYYMMDDHH24MISS')

WHERE SEQ =1 ;

 

이 오류의 원인은 NLS_DATE_FORMAT이 맞지 않아서 생기는 오류 이다.

필드명의 타입이 DATE 이므로 TO_DATE를 써서 DATE형태로 변환헤서 DATA를 넣을려고 하는 경우에 발생함.

 

 

--> 이 경우 오라클 설정의 NLS_DATE_FORMAT 값 등을 확인해서 조치를 하는 것이 좋을 것으로 보이지만.

 

내 경우에는 필드타입을 VARCHAR2 로 만들어버리는 선택을 하였다.

그 이유는 개발환경의 NLS_DATE_FORMAT  설정값과 운영 환경의 NLS_DATE_FORMAT 설정값이 다르기 때문에 개발에서 맞춰놓으면 운영에서 문제가 발생하기 때문이다.

또한 VARCHAR2로 변경을 한다고 해서 문제가 생길만한 이유가 없기 때문이기도 하다.

 

--> 오라클 상에서 DATE 타입의 필드명을 바로 VARCHAR2로 변환이 안되므로

필드를 생성해서 데이타를 모두 넣은 다음에 이름을 바꿔주는 방법으로 진행을 하였다.

 

--> 이 경우 XML 상에서 쿼리에서 날짜를 비교해서도 수정을 해줘야 하는데

내가 쓰는 날짜의 기본형이 TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS') 인데.. 

데이타를 이 형태로 저장을 해놓았다.  그리하여 날짜를 비교할 때는 아래와 같이 사용을 하고 있다.

 

WHERE 필드명 > TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS')

 

 

 

'DB > ORACLE' 카테고리의 다른 글

Oracle ACOS(n)  (0) 2020.03.20
Oracle ABS(n)  (0) 2020.03.20
oci_connect() [function.oci-connect]: ORA-24408  (0) 2019.11.08
TABLE EXPORT & IMPORT (CLOB 포함)  (0) 2019.05.14
ORA-01861: 리터럴이 형식 문자열과 일치하지 않음  (0) 2019.04.13
java.sql.sqlrecoverableexception: io 오류: connection reset  (0) 2018.11.18
clob 데이타 처리  (0) 2018.09.22
ojdbc6.jar  (0) 2018.04.16
Comments