반응형

Oracle 로고

DB에 데이터 작업을 하다 보면, 연월, 연월일, YYYYMM, YYYYMMDD 등과 같은 날짜 형식에 맞지 않는 데이터가 들어올 경우 제대로 된 함수나 프로시저 등이 작동되지 않을 수 있다. 그래서 오라클(Oracle)에서 특정 날짜 데이터를 받았을 때, 날짜 형식에 맞는 데이터인지 Validation 체크를 위한 함수에 대해 기록한다.


목차

1. FUNCTION을 이용한 날짜 체크
2. 예제

1. FUNCTION을 이용한 날짜 체크

오라클 DB에서 FUNCTION을 만들어서 날짜에 대한 Validation을 하는 경우다.

CREATE OR REPLACE FUNCTION LHSWMS.F_TYPE_DATE(P_DATE VARCHAR2, P_FORMAT VARCHAR2)
RETURN NUMBER 

IS
   V_DATE DATE;
  
BEGIN
	
    V_DATE := TO_DATE(P_DATE, P_FORMAT);
    RETURN 1;

EXCEPTION
    WHEN OTHERS THEN 
        RETURN 0;
       
END;

 

문자열 P_DATE와 형식 P_FORMAT 파라미터 값을 받아서, DATE 타입의 변수 V_DATE에 TO_DATE 함수를 사용하여 날짜 형식 체크를 하는 FUNCTION입니다. 그래서, 날짜 형식에 정상적으로 충족이 된다면 1을 리턴하고, 날짜 형식에 충족이 되지 않는다면 0을 리턴합니다.

 

2. 예제

1) 연월일

아래와 같이, 연도, 월, 일 날짜 형식인 'YYYYMMDD' 형태에 대한 체크다. 20230502 데이터의 경우는 1이 리턴이 되고, 20230532 데이터의 경우에는 0을 리턴한다.

SELECT F_GET_TYPE_DATE('20230502', 'YYYYMMDD')
  FROM DUAL; -- RETURN 1
SELECT F_GET_TYPE_DATE('20230532', 'YYYYMMDD')
  FROM DUAL; -- RETURN 0

 

2) 연월

아래와 같이, 연도, 월 날짜 형식인 'YYYYMM' 형태에 대한 체크다. 202305 데이터의 경우는 1이 리턴이 되고, 202313 데이터의 경우에는 0을 리턴한다.

SELECT F_GET_TYPE_DATE('202305', 'YYYYMM')
  FROM DUAL; -- RETURN 1
SELECT F_GET_TYPE_DATE('202313', 'YYYYMM')
  FROM DUAL; -- RETURN 0

 

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기