개발 등/ORACLE

java.sql.SQLException: ORA-01861: 문자열이 포맷 문자열에 맞지 않습니다

darkhorizon 2009. 12. 25. 16:01
728x90
반응형
- 예문
INSERT INTO HOME_GEUNMU_T (       
   FROM_DT , TO_DT
 )              
 SELECT             
 ENTER_YMD, RETI_YMD          
 FROM (             
 SELECT            
  ENTER_YMD,   
  RETI_YMD       
FROM FUNCTION_PLACE_WORK A       
WHERE            
  DELE_FLAG = 'N' AND        
  MEMB_NUMB = '80008191'         
 ORDER BY ENTER_YMD         
 )

위 쿼리문에서 조회한 빨간 색의 칼럼(varchar2 타입)과 인서트할 파란 색의 칼럼(date 타입) 데이터타입가 맞지 않아서 발생한다.
일반적인 날짜형식의 데이터일 때 즉 ('20091010') 같은 경우에서는 아무런 문제가 발생하지 않지만, '00000000'과 같은 날짜형식이 아닐 때 문제가 발생한다.
이때는 먼저 date 타입으로 변환해야 한 후 다시 varchar 형식으로 변환하면 된다. 주의할 점은 '00000000'의 경우와 같이 날짜형식이 아닌 값일 때는 null 처리로 해주어야 한다는 점이다.

따라서

TO_CHAR(TO_DATE(DECODE(ENTER_YMD,'00000000',null,ENTER_YMD),'YYYYMMDD'),'YYYY-MM-DD') AS ENTER_YMD
와 같이 처리해 주면 된다.
728x90