본문 바로가기
Database

[ORACLE] NUMTODSINTERVAL() 함수로 초/분/시간/일 간격 간편 계산하기

by Dev. Orion 2025. 6. 6.

오라클 NUMTODSINTERVAL() 함수로 초/분/시간/일 간격 간편 계산하기
[Oracle] NUMTODSINTERVAL

1. NUMTODSINTERVAL() 함수란?

Oracle의 NUMTODSINTERVAL() 함수는 숫자 값을 INTERVAL DAY TO SECOND 데이터 타입으로 변환하는 함수입니다. 이 함수를 사용하면 정수 또는 실수로 표현된 기간을 날짜 타입과 함께 쉽게 연산할 수 있습니다. 단위는 'DAY', 'HOUR', 'MINUTE', 'SECOND'로 지정할 수 있습니다.

2. 기본 문법

NUMTODSINTERVAL(n, interval_unit)
  • n: 간격을 의미하는 숫자 값 (예: 5, 1.5)
  • interval_unit: 'DAY', 'HOUR', 'MINUTE', 'SECOND' 중 하나

3. 간단한 사용 예제

예제 1: 5일 추가

SELECT SYSDATE + NUMTODSINTERVAL(5, 'DAY') AS result_date FROM dual;

예제 2: 3시간 추가

SELECT SYSDATE + NUMTODSINTERVAL(3, 'HOUR') AS result_date FROM dual;

예제 3: 90분(1.5시간) 추가

SELECT SYSDATE + NUMTODSINTERVAL(90, 'MINUTE') AS result_date FROM dual;

예제 4: 120초 차감

SELECT SYSDATE - NUMTODSINTERVAL(120, 'SECOND') AS result_date FROM dual;

4. 실무 활용 시나리오

  • 배치 작업에서 지연시간 추가
  • 로그 데이터 유효 기간 계산
  • 조건절에서 최근 X분, X시간 이내의 데이터 조회
  • 예약 시스템의 시간 오프셋 처리

5. 조건절에서의 활용 예제

예제: 최근 1시간 이내 요청 로그 조회

SELECT *
FROM request_log
WHERE log_time > SYSDATE - NUMTODSINTERVAL(1, 'HOUR');

예제: 15분 이상 경과한 트랜잭션 조회

SELECT *
FROM transactions
WHERE updated_at < SYSDATE - NUMTODSINTERVAL(15, 'MINUTE');

6. 관련 INTERVAL 함수 비교

함수 입력 형태 반환 타입 설명
NUMTODSINTERVAL 숫자 + 단위 ('DAY', 'HOUR', 등) INTERVAL DAY TO SECOND 숫자를 시간 간격으로 변환
NUMTOYMINTERVAL 숫자 + 단위 ('YEAR', 'MONTH') INTERVAL YEAR TO MONTH 숫자를 연월 간격으로 변환
TO_DSINTERVAL 문자열 (예: '01 02:00:00') INTERVAL DAY TO SECOND 문자열 기반 시간 간격 처리

7. PL/SQL에서의 활용 예제

DECLARE
  v_start_date DATE := SYSDATE;
  v_end_date   DATE;
BEGIN
  v_end_date := v_start_date + NUMTODSINTERVAL(2.5, 'DAY');
  DBMS_OUTPUT.PUT_LINE('종료일: ' || TO_CHAR(v_end_date, 'YYYY-MM-DD HH24:MI:SS'));
END;

8. NUMTODSINTERVAL 사용 시 주의사항

  • 단위 문자열은 반드시 대문자 'DAY', 'HOUR', 'MINUTE', 'SECOND' 중 하나여야 합니다.
  • 정수형/실수형 모두 허용되지만 과도한 소수점 사용은 부정확한 결과 초래 가능
  • INTERVAL 연산은 DATE + INTERVAL 또는 DATE - INTERVAL 형식만 허용됩니다.

9. 실무 팁

  • 시간 조건을 고정 값 대신 INTERVAL 함수로 처리하면 유연성 향상
  • 배치 로직이나 스케줄 조건에 자주 사용되므로, 유닛 테스트로 검증 권장
  • SYSDATE, SYSTIMESTAMP와 함께 활용 가능 (단, 타입 일치에 유의)

10. 마무리

NUMTODSINTERVAL() 함수는 Oracle SQL에서 시간 간격을 직관적으로 계산할 수 있는 매우 유용한 도구입니다. 특히 실무에서 정량적인 시간 오프셋 계산, 로그 필터링, 배치 예약 등의 작업에 필수적으로 사용되며, 다른 INTERVAL 함수들과 함께 사용하면 더욱 강력한 시간 제어 로직을 구현할 수 있습니다.

출처 및 참고 자료