일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 톰캣
- switch
- 호환성
- MYSQL
- jquery
- 네이버스마트 에디터
- java
- RADIO
- Oracle
- exception
- @RequestBody
- 날짜
- 오라클
- HTML5
- json
- 전자정부 표준프레임워크
- html
- 한글
- 스크립트
- checbox
- 이클립스
- JSTL
- 문자열
- spring form tag
- DB
- maven
- null
- 웹 플랫폼 설치 관리자
- php
- SSL
- Today
- Total
개인적인 정리
ORA-01843: 지정한 월이 부적합합니다. 본문
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 |