안녕하세요.
1. 생년월일의 자료형은 DATE 형입니다.
2. 국가별 포맷은, 쉽게 말해 날짜 형식을 의미합니다.
서비스 대상이 전국가이다 보니 국가별로 날짜를 보여주는 형식이 달라서 디비에 각 국가별로 yyyy/mm/dd 또는 mm/dd/yyyy 또는 dd/mm/yyyy가 들어있고, 그 설정을 읽어서 파라미터로 넘겨줍니다.
하기의 날짜형식 DD/MM/YYYY가 달라진다고 보시면 됩니다.
SELECT TO_CHAR(SYSDATE, 'DD/MM/YYYY') => SELECT TO_CHAR(SYSDATE, ${dateFormat})
FROM DUAL;
WITH t_master AS ( SELECT TO_DATE('2019/01/31', 'yyyy/mm/dd') birthday FROM dual ) , t_format AS ( SELECT 'KR' na, 'YYYY/MM/DD' fm, '(..)../(..)/(.).' v1, '\1**/\2/\3*' v2 FROM dual UNION ALL SELECT 'XX', 'MM/DD/YYYY', '(..)/(.)./(..)..', '\1/\2*/\3**' FROM dual UNION ALL SELECT 'YY', 'DD/MM/YYYY', '(.)./(..)/(..)..', '\1*/\2/\3**' FROM dual ) SELECT a.birthday , b.na , TO_CHAR(a.birthday, b.fm) birthday_fm , REGEXP_REPLACE(TO_CHAR(a.birthday, b.fm), b.v1, b.v2) birthday_mask FROM t_master a , t_format b -- WHERE b.na = 'KR' ;