2.IT/DB,ORACLE
[ORA-01850] 시간은 0에서 23 사이어야 합니다. 해결방법.
꿍스뿡이
2019. 5. 8. 15:59
꿍스뿡이의 드림빌더
ORACLE 24:00로 표현되는 부분 치환하기
안녕하세요. 꿍스뿡이입니다!
오라클 운영중에 종종 발생되는 24:00를 시간으로 치환할때 발생하는 오류에 대한
해결방법을 공유합니다.
기본데이터
1. 테이블명 : TEST
2. 대상칼럼 : DT(일자) VARCAHR2(8 BYTE), TIME(시간) VARCHAR2(4 BYTE)
3. 원하는조건 : 시간에 24가 들어간 부분을 00으로 치환하고자 할때
4. 현재데이터 : DT 컬럼 -> 20190101, TIME컬럼 -> 24:15
5. 변경하고자 하는 데이터 : 20190101 0015
처리방법
뭔가 신박한 처리방법이 있으시면 댓글로 남겨주시기 바랍니다.
저는 해당부분을 CASE문을 이용하여 처리했습니다.
필요하신 분은 바로 복사하여 이용해주세요~
WITH TEST AS (SELECT '20190101' AS DT, '2415' AS TIME FROM DUAL)
SELECT TO_DATE(BASE_DT, 'YYYYMMDDHH24MISS')
FROM (SELECT DT || CASE WHEN SUBSTR(TIME,0,2) LIKE '24%' THEN '00'
ELSE SUBSTR(TIME,0,2)
END
|| SUBSTR(TIME, 3,2) AS BASE_DT
FROM TEST)
내용이 도움이 되셨거나 초보 블로거를 응원하고 싶으신 분은 아래 하트♥공감 버튼을 꾹 눌러주세요!
내용의 수정이 있거나 도움이 필요하신 분은 댓글을 남겨주세요!