728x90

TO_DATE() 함수는 Oracle SQL에서 문자열(String)을 날짜(Date) 형식으로 변환할 때 사용하는 핵심 함수입니다. 날짜 데이터 처리 시 필수적으로 사용되는 함수로, 다양한 포맷을 지정할 수 있으며, 잘못된 사용 시 오류가 발생하기 쉽기 때문에 정확한 이해가 필요합니다.
1. TO_DATE 함수란?
TO_DATE()는 문자열을 Oracle의 DATE 데이터 타입으로 변환하는 함수입니다. 날짜와 시간이 문자열로 저장되어 있을 경우 이를 연산, 비교, 정렬 등 날짜 함수와 함께 사용하려면 반드시 TO_DATE 변환이 필요합니다.
TO_DATE('2025-06-03', 'YYYY-MM-DD')
2. 기본 문법
TO_DATE(string, format)
- string: 날짜로 변환할 문자열
- format: 문자열의 형식을 지정하는 포맷 문자열
3. 주요 포맷 문자
| 포맷 문자 | 의미 | 예시 |
|---|---|---|
| YYYY | 4자리 연도 | 2025 |
| MM | 2자리 월 | 06 |
| DD | 2자리 일 | 03 |
| HH24 | 24시간제 시 | 14 |
| MI | 분 | 30 |
| SS | 초 | 59 |
4. 실무 예제
예제 1: 기본 날짜 변환
SELECT TO_DATE('2025-06-03', 'YYYY-MM-DD') AS result FROM dual;
예제 2: 날짜와 시간 포함
SELECT TO_DATE('2025-06-03 14:30:00', 'YYYY-MM-DD HH24:MI:SS') AS result FROM dual;
예제 3: 잘못된 포맷 사용 시 오류
SELECT TO_DATE('03-06-2025', 'YYYY-MM-DD') FROM dual; -- 오류 발생
5. 응용 활용
예제 4: 날짜 비교
SELECT *
FROM orders
WHERE order_date >= TO_DATE('2025-01-01', 'YYYY-MM-DD');
예제 5: BETWEEN 절 활용
SELECT *
FROM sales
WHERE sale_date BETWEEN TO_DATE('2025-01-01', 'YYYY-MM-DD')
AND TO_DATE('2025-06-30', 'YYYY-MM-DD');
예제 6: 사용자 입력 문자열 처리
DECLARE
input_date VARCHAR2(20) := '2025/06/03 10:00:00';
converted_date DATE;
BEGIN
converted_date := TO_DATE(input_date, 'YYYY/MM/DD HH24:MI:SS');
DBMS_OUTPUT.PUT_LINE(converted_date);
END;
6. 오류 방지 팁
- 문자열 포맷과 TO_DATE 포맷이 일치해야 함
- 날짜 문자열에 공백 또는 잘못된 문자 주의
- 날짜 계산 전 TO_DATE 처리 필수
- NLS_DATE_FORMAT 환경 설정의 영향을 받을 수 있음
7. TO_DATE와 관련 함수 비교
| 함수 | 기능 | 반환 타입 |
|---|---|---|
| TO_DATE | 문자열 → 날짜 | DATE |
| TO_CHAR | 날짜 → 문자열 | VARCHAR2 |
| SYSDATE | 현재 시스템 날짜 | DATE |
8. 결론
Oracle SQL에서 날짜 데이터를 다룰 때 TO_DATE() 함수는 핵심적인 역할을 합니다. 문자열을 명확하고 정확하게 날짜로 변환하는 방법을 익혀두면 데이터 오류를 줄이고, 안정적인 SQL 로직을 구현할 수 있습니다. 다양한 예제를 통해 실전에서 TO_DATE 함수의 응용 능력을 높여보세요.
9. 참고자료
- Oracle 공식 문서: https://docs.oracle.com
- Oracle SQL Language Reference 21c
- SQL 실무 활용 강의 - Oracle 기반 날짜 처리 편
728x90
'Database > Oracle' 카테고리의 다른 글
| [ORACLE] TO_TIMESTAMP()로 문자열을 타임 스탬프로 변환하는 방법 (0) | 2025.06.05 |
|---|---|
| [ORACLE] TO_CHAR() 함수로 날짜를 문자열로 변환하는 실무 팁과 예제 (0) | 2025.06.04 |
| [ORACLE] SYSTIMESTAMP()로 타임 존 포함 현재 시각 가져오는 방법 (0) | 2025.06.04 |
| [ORACLE] CURRENT_TIMESTAMP() 함수로 정확한 현재 시간 가져오기 (0) | 2025.06.04 |
| [ORACLE] CURRENT_DATE() 함수로 세션 기준 날짜 쉽게 확인하기 (0) | 2025.06.04 |