반응형
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 |