반응형
오라클(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이 아닌 조회 조건을 걸어 데이터를 가져온다.
이렇게 해서 문제를 해결할 수 있는데, 언제나 조금 찝찝한 느낌이다.
반응형
'IT > Oracle' 카테고리의 다른 글
[Oracle] 오라클(Oracle) 특정 데이터 값으로 모든 테이블에서 데이터 찾는 방법 (0) | 2023.12.26 |
---|---|
[Oracle] 오라클(Oracle) ora-00257 archiver error. connect as sysdba only until resolved 문제 해결 방법 (0) | 2023.10.01 |
[Oracle] 오라클(Oracle) TO_NUMBER 999999D99 사용시 주의해야 할 점 (0) | 2023.08.13 |
[Oracle] 오라클(Oracle) 문자열 SPLIT하는 방법 (0) | 2023.07.21 |
[Oracle] 오라클(Oracle) 데이터 롤백하는 방법 (0) | 2023.07.05 |
[Oracle] 오라클(Oracle) 날짜 및 AMPM 구하는 방법 (0) | 2023.07.03 |
[Oracle] 오라클(Oracle) fetch 문의 into 항목에 값의 수가 잘못됐습니다. 해결 방법 (0) | 2023.06.30 |
[Oracle] 오라클(Oracle) NUMBER 타입 소수점에 대한 글 (0) | 2023.06.11 |
최근댓글