오라클에서 YYYYMMDD 형식을 가진 컬럼의 데이터를 TO_DATE를 사용하여 데이터를 가져오려고 했는데 아래의 문제가 발생했다.
ORA-01830: 날짜 형식의 지정에 불필요한 데이터가 포함되어 있습니다
이 문제의 원인은 쉽게 설명하면 이거다.
내가 가지고 있는 날짜 형식의 데이터는 YYYYMMDD 형식을 가지고 있는데, 왜 이 데이터는 YYYYMM 형식으로 바꾸는 거임?
그러면 나머지 데이터 DD는 어떻게 할거임?
그래서 데이터를 가져올 때 형식에 맞게 일단 가져오는게 중요하다.
문제 해결 방법
ORA-01830 날짜 형식의 지정에 불필요한 데이터가 포함되어 있습니다라는 문제를 해결하기 위해서는 TO_DATE를 사용할 때 데이터의 형식에서 데이터가 빠지지 않게 가져오는게 중요하다.

내가 가지고 오고 싶은 데이터 컬럼의 데이터 형식은 YYYYMMDD 형식으로 되어 있는데, 이 데이터를 YYYYMM 형식으로 가져와서 쓰고 싶었다.
SELECT TO_CHAR(TO_DATE(TMPDAT, 'YYYY-MM-DD'), 'YYYY-MM-DD') as YMDD
FROM DUAL
WHERE TO_CHAR(TO_DATE(TMPDAT, 'YYYYMM'), 'YYYYMM') = '202503'
위와 같이, 쿼리를 실행하면 위의 문제가 발생한다.
따라서, 위의 코드는 아래와 같이 변경이 되어야 한다.
SELECT TO_CHAR(TO_DATE(TMPDAT, 'YYYY-MM-DD'), 'YYYY-MM-DD') as YMDD
FROM DUAL
WHERE TO_CHAR(TO_DATE(TMPDAT, 'YYYYMMDD'), 'YYYYMM') = '202503'
TMPDAT라는 컬럼의 데이터를 YYYYMMDD 형식으로 가져와서, 이거를 YYYYMM 형식으로 CHAR로 변경을 한 데이터가 202503인거를 가져온다.
위의 형식으로 사용해야 문제가 발생하지 않는다.
'IT > Oracle' 카테고리의 다른 글
[Oracle] 오라클(Oracle) 소수점 0. 표시하는 방법(RTRIM, TO_CHAR) (0) | 2025.02.25 |
---|---|
[Oracle] 오라클(Oracle) 문자열 합치는 방법(CONCAT, ||) (0) | 2025.02.25 |
[Oracle] 오라클(Oracle)에서 트랜잭션과 락에 대한 경험 정리 (0) | 2025.01.24 |
[Oracle/Orange] 오렌지(Orange for Oracle) dmp 파일 import하는 방법 (0) | 2024.12.19 |
[Oracle/Orange] 오렌지(Orange for Oracle) TNSNAME ORA 설정하기 (0) | 2024.12.17 |
[Oracle/Orange] Windows 11에서 오렌지(Orange for Oracle) 설치하는 방법 (0) | 2024.12.16 |
[Oracle] 오라클(Oracle) ORA-01950: 테이블스페이스에 대한 권한이 없습니다. 문제 해결 방법 (1) | 2024.12.12 |
[Oracle] Windows11 오라클 테이블 스페이스(Table Space) 생성하기 (0) | 2024.12.12 |
최근댓글