728x90

Oracle SQL을 사용하다 보면 날짜 및 시간 데이터를 다루는 일이 매우 중요합니다. 특히 시간까지 정밀하게 저장하거나 비교해야 할 때 TO_TIMESTAMP() 함수는 필수적입니다. 본 글에서는 TO_TIMESTAMP 함수의 사용법, 활용 예제, TO_DATE와의 차이점 등을 정리하여, 실무에 바로 적용할 수 있도록 구성하였습니다.
1. TO_TIMESTAMP() 함수란?
TO_TIMESTAMP()는 문자열을 타임스탬프(TIMESTAMP) 데이터 타입으로 변환하는 Oracle의 내장 함수입니다. 시간 정보(시, 분, 초, 소수점 이하 초까지 포함)를 정확하게 저장할 수 있습니다.
기본 문법
TO_TIMESTAMP(char, format)
char: 변환할 문자열format: 문자열의 형식을 지정하는 패턴
예제 1: 기본 사용법
SELECT TO_TIMESTAMP('2025-06-04 14:23:45', 'YYYY-MM-DD HH24:MI:SS') AS result FROM dual;
2. 날짜 형식 포맷 패턴
TO_TIMESTAMP는 TO_DATE와 비슷한 형식 패턴을 따르며, 그 외에도 소수점 이하 초 단위를 다루는 FF 시리즈를 사용할 수 있습니다.
| 포맷 | 설명 | 예시 |
|---|---|---|
| YYYY | 연도(4자리) | 2025 |
| MM | 월(2자리) | 06 |
| DD | 일 | 04 |
| HH24 | 시(24시간제) | 14 |
| MI | 분 | 23 |
| SS | 초 | 45 |
| FF1 ~ FF9 | 소수점 이하 초 (최대 9자리) | .123456789 |
예제 2: 밀리초 포함
SELECT TO_TIMESTAMP('2025-06-04 14:23:45.789', 'YYYY-MM-DD HH24:MI:SS.FF3') FROM dual;
3. TO_TIMESTAMP vs TO_DATE 차이점
- TO_DATE: 날짜 정보까지만 저장 (시, 분, 초 가능하지만 소수점 불가)
- TO_TIMESTAMP: 마이크로초 단위까지 저장 가능
예제 비교
-- TO_DATE 결과 (초까지)
SELECT TO_DATE('2025-06-04 14:23:45', 'YYYY-MM-DD HH24:MI:SS') FROM dual;
-- TO_TIMESTAMP 결과 (소수점 이하 초까지)
SELECT TO_TIMESTAMP('2025-06-04 14:23:45.789123', 'YYYY-MM-DD HH24:MI:SS.FF6') FROM dual;
4. 실무 활용 팁
4-1. BETWEEN 절에 사용
SELECT * FROM logs
WHERE log_time BETWEEN
TO_TIMESTAMP('2025-06-04 00:00:00', 'YYYY-MM-DD HH24:MI:SS') AND
TO_TIMESTAMP('2025-06-04 23:59:59.999999', 'YYYY-MM-DD HH24:MI:SS.FF6');
4-2. 시간 차 계산
SELECT (TO_TIMESTAMP('2025-06-04 15:30:00', 'YYYY-MM-DD HH24:MI:SS') -
TO_TIMESTAMP('2025-06-04 14:00:00', 'YYYY-MM-DD HH24:MI:SS')) AS 시간차
FROM dual;
5. 오류 방지 체크리스트
- 형식 문자열이 실제 입력값과 반드시 일치해야 함
- 소수점 이하 초는
FF사용 필수 - 널(null) 처리 시
NVL()또는COALESCE()병행 권장
6. 마무리 및 요약
TO_TIMESTAMP() 함수는 Oracle SQL에서 정밀한 시간 처리에 핵심적인 역할을 합니다. 개발 및 운영 환경에서 정확한 시간 비교, 로그 분석, 배치 처리 등에 자주 사용되므로, 형식 지정법과 예제들을 숙지하면 실무 생산성을 크게 향상할 수 있습니다.
참고자료
- Oracle 공식 문서
- Oracle 10g TO_TIMESTAMP Reference
- 실제 프로젝트 쿼리 작성 경험 및 사내 SQL 가이드
728x90
'Database > Oracle' 카테고리의 다른 글
| [ORACLE] ADD_MONTHS()로 손쉬운 월 단위 날짜 계산 구현하기 (0) | 2025.06.05 |
|---|---|
| [ORACLE] ADD_MONTHS()로 손쉬운 월 단위 날짜 계산 구현하기 (0) | 2025.06.05 |
| [ORACLE] TO_CHAR() 함수로 날짜를 문자열로 변환하는 실무 팁과 예제 (0) | 2025.06.04 |
| [ORACLE] TO_DATE() 함수로 문자열을 날짜로 변환하는 가장 쉬운 방법 (0) | 2025.06.04 |
| [ORACLE] SYSTIMESTAMP()로 타임 존 포함 현재 시각 가져오는 방법 (0) | 2025.06.04 |