본문 바로가기
Database/Oracle

[ORACLE] TO_DSINTERVAL() 함수 완전 정복 : 일/시간 간격 처리 마스터하기

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

오라클 TO_DSINTERVAL() 함수 완전 정복: 일/시간 간격 처리 마스터하기
[Oracle] TO_DSINTERVAL

1. TO_DSINTERVAL() 함수란?

TO_DSINTERVAL() 함수는 Oracle에서 문자열을 INTERVAL DAY TO SECOND 타입으로 변환해 주는 함수입니다. 이 함수는 일, 시간, 분, 초 단위로 시간 간격을 지정하여 날짜 계산을 수행할 수 있게 해 줍니다.

2. 문법

TO_DSINTERVAL('[-]DD HH:MI:SS')
  • DD: 일 수 (Days)
  • HH: 시 (Hours)
  • MI: 분 (Minutes)
  • SS: 초 (Seconds)

3. 기본 사용 예제

예제 1: 날짜에 일 단위 간격 더하기

SELECT SYSDATE + TO_DSINTERVAL('5 00:00:00') AS plus_5_days FROM dual;

예제 2: 날짜에 시간 간격 더하기

SELECT SYSDATE + TO_DSINTERVAL('0 12:00:00') AS plus_12_hours FROM dual;

예제 3: 날짜에 마이너스 간격 적용

SELECT SYSDATE - TO_DSINTERVAL('1 03:30:00') AS minus_1_day_3_5_hours FROM dual;

4. 실무에서의 활용 사례

  • 로그 데이터 분석 시 특정 시간 이내 필터링
  • 예약 시스템에서 유효 시간 계산
  • 배치 작업 시간 지연 처리
  • 타임존 차이 보정 및 시간 간격 계산

5. INTERVAL 관련 함수 비교

함수 형식 용도 예시
TO_DSINTERVAL 'DD HH:MI:SS' 일, 시, 분, 초 간격 처리 '02 06:30:00'
TO_YMINTERVAL 'YY-MM' 연/월 간격 처리 '01-03'
NUMTODSINTERVAL 숫자 + 단위 정수 기반 간격 처리 30, 'MINUTE'
NUMTOYMINTERVAL 숫자 + 단위 연/월 간격 2, 'YEAR'

6. 자주 발생하는 오류와 해결

  • ORA-01873: 포맷 오류 → 'DD HH24:MI:SS' 형식 확인 필요
  • ORA-30076: INTERVAL 타입 처리 오류 → 날짜 연산 시 타입 호환 확인
  • 정수형 숫자를 바로 더하지 말고 TO_DSINTERVAL을 사용하여 명시적으로 표현

7. INTERVAL을 조건절에 사용하는 방법

예제: 최근 2일 이내에 생성된 데이터 조회

SELECT * FROM user_logs
WHERE created_at > SYSDATE - TO_DSINTERVAL('2 00:00:00');

예제: 1일 4시간 이상 지난 데이터 조회

SELECT * FROM events
WHERE updated_at < SYSDATE - TO_DSINTERVAL('1 04:00:00');

8. INTERVAL 활용 팁

  • 시간 계산 시 +/- INTERVAL 연산으로 날짜 처리 가능
  • 동적 SQL에서도 문자열 조합으로 활용 가능
  • DBMS_SCHEDULER나 JOB 설정 시 유용하게 쓰임

9. PL/SQL 내에서의 활용 예제

DECLARE
  v_future_date DATE;
BEGIN
  v_future_date := SYSDATE + TO_DSINTERVAL('3 00:00:00');
  DBMS_OUTPUT.PUT_LINE('3일 후 날짜: ' || TO_CHAR(v_future_date, 'YYYY-MM-DD HH24:MI:SS'));
END;

10. 마무리

TO_DSINTERVAL() 함수는 오라클에서 시간 간격 기반 연산이 필요한 경우 가장 직관적으로 활용할 수 있는 도구입니다. 다양한 시간 단위를 문자열 형태로 명확하게 표현하고, 조건문, 날짜 연산, 프로시저 등 다양한 영역에서 일관되게 사용할 수 있다는 점에서 실무 개발자에게 매우 유용한 함수입니다.

출처 및 참고 자료

  • Oracle 공식 문서: https://docs.oracle.com/en/database/
  • Oracle 21c SQL Language Reference
  • Oracle PL/SQL Developer’s Guide
  • 실제 프로젝트 및 PL/SQL 환경 테스트 기반
728x90