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
와 같이 처리해 주면 된다.
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