한 열에 날짜 형식이 섞여 들어오는 데이터가 있습니다. 예를 들어 입사일 열에 2007-06-28T00:00:00.000+00:00과 12/15/2019T00:00:00.000+00:00이 함께 있으면, Oracle Analytics(OAC)에서 날짜로 변환할 때 한쪽이 실패합니다. 이 글은 데이터셋 편집기의 Replace(정규식)로 형식을 하나로 맞춘 뒤 날짜로 변환하는 방법을 정리합니다.
2024년 9월 Notion에 정리했던 글을 옮기면서 2026년 10월에 Oracle 문서로 다시 확인하고 고쳤습니다. 원본 스크린숏은 2020년 무렵의 옛 OAC 화면이라 넣지 않았습니다. 지금 OAC는 화면 구성과 메뉴 이름이 달라졌으니, 메뉴 위치는 사용하는 버전에서 확인하세요. 기능(Replace의 정규식, Convert to Date)은 현재 문서에도 그대로 있습니다.
원본 방법의 문제
원본은 MM/dd/yyyy 부분만 정규식으로 바꾼 뒤, 사용자 정의 형식 yyyy-MM-dd'T'HH:mm:ss.SSS+SS:SS로 변환했습니다. 이 형식은 끝의 시간대 +00:00을 초 단위 필드(SS)로 읽게 만드는 우회라서, 시간대가 +00:00이 아닌 값이 들어오면 잘못 해석됩니다. 또 원본 정규식 (\d{1,2})/(\d{1,2})/(\d{4}) → $3-$1-$2는 6/5/2019를 2019-6-5로 만들어 자릿수가 맞지 않습니다.
날짜만 필요하다면 시간·시간대 부분을 먼저 잘라내고, 월·일을 두 자리로 맞춘 뒤 yyyy-MM-dd로 바꾸는 편이 단순하고 안전합니다.
Replace 단계 4개
데이터셋 편집기에서 날짜 열을 선택하고 Replace를 고른 뒤, “정규식 사용(Use regular expression)”을 켜고 아래 4개를 차례로 추가합니다. OAC의 Replace는 PCRE 정규식을 지원하고, 바꿀 문자열에서 캡처 그룹을 $1, $2로 참조합니다.
| 순서 | 바꿀 문자열(정규식) | 새 문자열 | 하는 일 |
|---|---|---|---|
| 1 | T.*$ | (비움) | T 이후의 시간·시간대 제거 |
| 2 | ^(\d)/ | 0$1/ | 한 자리 월 앞에 0 |
| 3 | /(\d)/ | /0$1/ | 한 자리 일 앞에 0 |
| 4 | ^(\d{2})/(\d{2})/(\d{4})$ | $3-$1-$2 | MM/dd/yyyy → yyyy-MM-dd |
결과는 다음과 같습니다. 이미 yyyy-MM-dd인 값은 1단계에서 시간만 잘리고 나머지 단계에는 걸리지 않습니다.
| 원래 값 | 결과 |
|---|---|
2007-06-28T00:00:00.000+00:00 | 2007-06-28 |
12/15/2019T00:00:00.000+00:00 | 2019-12-15 |
6/5/2019T00:00:00.000+00:00 | 2019-06-05 |
11/2/2020T00:00:00.000+00:00 | 2020-11-02 |
위 결과는 같은 정규식을 Python re로 시험해 확인한 것입니다(Python에서는 $1 대신 \1). OAC에서도 단계마다 미리보기로 결과를 확인한 뒤 다음 단계를 추가하세요.
날짜로 변환
열을 선택하고 Convert to Date를 고른 뒤, 원본 형식(Source Format)으로 yyyy-MM-dd에 해당하는 형식을 고르거나 사용자 정의로 입력합니다. 단계를 추가한 다음 데이터셋을 저장해야 반영됩니다.
주의: 위 정규식은 슬래시 형식이 월/일/연도라고 가정합니다. 일/월/연도 데이터가 섞여 있다면 값만 보고 구분할 수 없으니, 원천 시스템에서 형식을 확인하세요. 시간이나 시간대가 분석에 필요하다면 1단계로 잘라내지 말고 시간대 기준을 먼저 정해야 합니다.
정리
형식이 섞인 날짜 열은 Replace(정규식)로 한 형식에 맞춘 뒤 Convert to Date로 바꿉니다. 시간대를 다른 필드로 읽게 하는 우회 형식보다, 필요 없는 부분을 잘라내고 자릿수를 맞추는 편이 예외 값에 강합니다.



