반응형

Oracle 로고

 

오라클에서 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인거를 가져온다.

 

위의 형식으로 사용해야 문제가 발생하지 않는다.

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기

코집사님의
글이 좋았다면 응원을 보내주세요!

*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*