본문 바로가기

db/oracle

oracle TO_TIMESTAMP 유연성과 안정성

반응형

oracle TO_TIMESTAMP 유연성

오라클 TO_TIMESTAMP 유연성
CREATE OR REPLACE FUNCTION fn_to_timestamp(p_text VARCHAR2)
RETURN TIMESTAMP
AS
  v_timestamp TIMESTAMP;
BEGIN
  BEGIN
    v_timestamp := TO_TIMESTAMP(REGEXP_REPLACE(p_text, '[^0-9]+', ''), 'YYYYMMDDHH24MISSFF3');
    RETURN v_timestamp;
  EXCEPTION
    WHEN OTHERS THEN
      RETURN NULL;
  END;
END;
  • 유연성 : p_text가 다양한 형식 (예: 2023-10-27 10:30:00, 2023/10/27 10:30:00, 20231027103000 등)으로 들어올 수 있습니다.  REGEXP_REPLACE를 사용하면 숫자 부분만 추출하여 YYYYMMDDHH24MISSFF3 형식으로 맞춰줄 수 있습니다.  즉, 입력 문자열의 형식이 다소 유연해도 함수가 동작하도록 하는 것입니다.
  • 안전성 : p_text에 예상치 못한 문자가 포함되어 있으면 TO_TIMESTAMP 함수에서 오류가 발생할 수 있습니다. REGEXP_REPLACE를 사용하여 숫자 외의 문자를 제거함으로써 이러한 오류 발생 가능성을 줄입니다.
  • 데이터 정제 :  입력 데이터의 품질이 좋지 않은 경우 (예: 불필요한 공백, 특수 문자 등이 섞여 있는 경우) REGEXP_REPLACE를 통해 데이터를 정제하는 효과를 얻을 수 있습니다.

※ 만약 p_text가 '2023-10-27 10:30:00' 이라면, TO_TIMESTAMP 함수에 바로 전달하면 오류가 발생합니다. 하지만, REGEXP_REPLACE를 통해 '20231027103000'으로 변환한 후 TO_TIMESTAMP에 전달하면 정상적으로 변환됩니다.


반응형

'db > oracle' 카테고리의 다른 글

oracle 프로시저 생성 및 실행  (0) 2025.02.15
oracle duration time 함수  (0) 2025.02.10
oracle 문자열 테이블 리스트 만들기  (0) 2025.02.10
oracle 퍼센트 구하기 함수  (0) 2025.02.09
oracle round 함수  (0) 2025.02.09