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)



 

내용이 도움이 되셨거나 초보 블로거를 응원하고 싶으신 분은 아래 하트♥공감 버튼을 꾹 눌러주세요! 

내용의 수정이 있거나 도움이 필요하신 분은 댓글을 남겨주세요!