본문 바로가기
Database/Oracle

[ORACLE] TO_TIMESTAMP()로 문자열을 타임 스탬프로 변환하는 방법

by Papa Martino V 2025. 6. 5.
728x90

오라클 TO_TIMESTAMP()로 문자열을 타임스탬프로 변환하는 방법
[Oracle] TO_TIMESTAMP

 

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에서 정밀한 시간 처리에 핵심적인 역할을 합니다. 개발 및 운영 환경에서 정확한 시간 비교, 로그 분석, 배치 처리 등에 자주 사용되므로, 형식 지정법과 예제들을 숙지하면 실무 생산성을 크게 향상할 수 있습니다.

참고자료

728x90