정보

[Oracle] 오라클 날짜 더하기/빼기 완벽 가이드 – DATEADD 없이 날짜 계산하는 법

mindlab091908 2025. 5. 7. 22:17
반응형

 

오라클 데이터베이스를 다루다 보면 날짜(Date) 타입에 특정 시간 간격을 더하거나 빼야 하는 경우가 많습니다. 예를 들어, 특정 날짜에서 1일을 더하거나, 5시간을 빼거나, 혹은 2개월 뒤의 날짜를 구해야 하는 업무는 매우 흔하죠.

그런데 오라클에서는 SQL Server처럼 DATEADD() 함수를 사용하지 않고도 날짜 연산이 가능합니다. +, - 연산자 또는 INTERVAL 키워드, 그리고 ADD_MONTHS() 같은 내장 함수를 통해 날짜 연산을 직관적이고 유연하게 처리할 수 있습니다.

이 포스팅에서는 오라클 SQL에서 날짜를 더하거나 빼는 다양한 방법을 기초부터 고급까지 예제 중심으로 자세히 설명합니다. 실무에서 자주 사용하는 패턴을 모두 정리했으니, 책갈피 해두고 필요할 때 참고하세요!


🔍 목차

  1. 오라클에서 날짜 계산이 중요한 이유
  2. 기본적인 +, - 연산으로 날짜 계산하기
  3. 시간 단위 연산 (시, 분, 초)
  4. 개월 수 계산: ADD_MONTHS() 함수 활용
  5. INTERVAL 키워드로 명확하게 날짜 계산
  6. 복합 시간 단위 계산 (시:분, 분:초 등)
  7. 실무 예제 모음
  8. 마무리: 오라클 날짜 연산의 정리와 팁

1. 📅 오라클에서 날짜 계산이 중요한 이유

오라클 SQL을 사용할 때 날짜와 시간을 다루는 건 단순한 조회를 넘어, 정산, 로그 분석, 예약 시스템, 시간 조건 필터링 등 거의 모든 업무에 필수입니다. 예를 들어,

  • 어제 하루 동안의 데이터를 조회하거나
  • 3개월 후 만기일을 계산하거나
  • 5분 전부터 현재까지의 로그만 보고 싶을 때

날짜 연산이 필수적입니다. 하지만 오라클에서는 DATEADD() 함수가 없기 때문에, 아래에서 소개할 오라클 전용 날짜 계산법을 제대로 이해하고 있어야 실무에서 시간을 절약할 수 있습니다.


2. ➕➖ +, - 연산자로 날짜 계산하기

가장 기본적이고 직관적인 방법은 숫자를 일(day) 단위로 더하거나 빼는 것입니다. 오라클에서 날짜 타입끼리의 연산은 기본적으로 "일 수" 기준입니다.

SELECT SYSDATE,
       SYSDATE + 1 AS one_day_after,
       SYSDATE - 1 AS one_day_before
  FROM dual;

결과 설명:

  • SYSDATE + 1 → 오늘 날짜에 1일을 더한 날짜
  • SYSDATE - 1 → 오늘 날짜에서 1일을 뺀 날짜

TIP: SYSDATE는 오라클에서 현재 날짜와 시간을 반환합니다.


3. ⏱ 시, 분, 초 단위 계산하기

오라클에서는 시, 분, 초 단위의 연산도 가능합니다. 단, 이때는 1일을 기준으로 나눈 비율을 사용해야 합니다.

✅ 시(hour)를 더하거나 빼기

SELECT SYSDATE,
       SYSDATE + 5/24 AS plus_5_hour
  FROM dual;
  • 5/24 → 5시간 = 하루의 5/24

✅ 분(minute)을 더하거나 빼기

SELECT SYSDATE,
       SYSDATE + 5/(24*60) AS plus_5_minute
  FROM dual;
  • 5 / (24 * 60) → 5분 = 하루의 0.00347222

✅ 초(second)를 더하거나 빼기

SELECT SYSDATE,
       SYSDATE + 5/(24*60*60) AS plus_5_second
  FROM dual;
  • 5 / (24 * 60 * 60) → 5초 = 하루의 0.000057870

4. 📆 개월 수 계산은 ADD_MONTHS() 함수로

날짜에 개월 수를 더하거나 빼는 작업은 ADD_MONTHS() 함수를 사용해야 정확합니다. 윤년, 월말 같은 특수 상황에서도 정확하게 작동합니다.

SELECT SYSDATE,
       ADD_MONTHS(SYSDATE, 1)  AS next_month,
       ADD_MONTHS(SYSDATE, -1) AS prev_month
  FROM dual;
  • ADD_MONTHS(날짜, 개월수) 형식
  • 음수값을 넣으면 개월 수만큼 이전 날짜가 반환됩니다.

5. 🧩 INTERVAL 키워드로 명확한 날짜 연산

INTERVAL은 SQL 표준에 따른 키워드로, 시간 단위를 명시적으로 표현할 수 있어 가독성이 좋고 유지보수도 쉽습니다.

SELECT SYSDATE,
       SYSDATE + INTERVAL '1' DAY   AS plus_1_day,
       SYSDATE - INTERVAL '1' HOUR  AS minus_1_hour,
       SYSDATE + INTERVAL '10' MINUTE AS plus_10_min
  FROM dual;

사용 가능한 단위

  • YEAR, MONTH, DAY, HOUR, MINUTE, SECOND

예시: 2시간 10분 더하기

SELECT SYSDATE + INTERVAL '02:10' HOUR TO MINUTE AS plus_2h10m FROM dual;

6. 🧮 복합 시간 단위 계산

INTERVAL을 응용하면 복합적인 시간 단위도 쉽게 계산할 수 있습니다. 아래 예시는 실무에서 자주 사용되는 조합입니다.

형식 의미

INTERVAL '3 12' DAY TO HOUR 3일 12시간
INTERVAL '2 04:30' DAY TO MINUTE 2일 4시간 30분
INTERVAL '1 10:15:20' DAY TO SECOND 1일 10시간 15분 20초
INTERVAL '12:45' HOUR TO MINUTE 12시간 45분
INTERVAL '25:10:05' HOUR TO SECOND 25시간 10분 5초
INTERVAL '33:20' MINUTE TO SECOND 33분 20초

7. 📌 실무 예제 모음

🎯 최근 7일 내 데이터 조회

SELECT * FROM my_table
 WHERE created_at >= SYSDATE - 7;

🎯 5분 전부터 현재까지의 로그

SELECT * FROM logs
 WHERE log_time BETWEEN SYSDATE - 5/(24*60) AND SYSDATE;

🎯 다음 달 마지막 날 계산

SELECT LAST_DAY(ADD_MONTHS(SYSDATE, 1)) FROM dual;

8. ✅ 마무리: 오라클 날짜 연산 총정리

연산 유형 방법 설명

날짜 ± 일수 SYSDATE ± n 일 단위 계산
날짜 ± 시/분/초 SYSDATE ± n / (24*단위) 시, 분, 초 계산
개월수 ± ADD_MONTHS(날짜, n) 월 단위 정밀 계산
명시적 시간 단위 INTERVAL 가독성 높음, 복합 단위 가능

💡 마무리 팁

  • +, - 연산은 빠르지만 단위가 직관적이지 않아 가독성이 떨어질 수 있습니다.
  • INTERVAL은 문법이 다소 길더라도 단위 명시와 복합 시간 연산에 매우 유리합니다.
  • 월 단위는 반드시 ADD_MONTHS()를 사용하세요. 일수 환산으로는 월말 처리 등에서 오류가 날 수 있습니다.

🏷️ 관련 태그

#오라클SQL #날짜계산 #INTERVAL #ADD_MONTHS #SYSDATE #OracleDate #SQL날짜연산 #오라클날짜함수 #DATEADD대체 #DB개발

 

반응형