본문 바로가기
오라클[ORACLE]

[오라클] TO_DATE 날짜 연산 정리

by devlog93 2025. 12. 15.

오라클 TO_DATE 날짜 연산 정리를 해보려 합니다.

  • 오라클(Oracle)에서 날짜(Date)는 실무에서 조회 조건, 통계, 기간 계산 등 거의 모든 SQL에서 사용된다
  • 이번 글에서 TO_DATE를 기본으로 날짜 더하기, 빼기, 일/월/연 단위 연산을 한 번에 정리해 보려한다.

Oracle Date 타입 기본 개념

  • Oracle의 Date 타입은 날짜 + 시간을 함께 저장한다.
SYSDATE

* 현재 날짜와 시간 반환

* 결과 예: 2025-12-15 19:30:25

 

TO_DATE - 문자 -> 날짜 변환

SELECT TO_DATE('2025-12-01', 'YYYY-MM-DD') 
  FROM DUAL;
SELECT TO_DATE('20251201', 'YYYYMMDD') 
  FROM DUAL;

 

* 문자 포맷과 형식이 다르면 오류 발생

날짜 + 숫자 = 일(DAY) 더하기 / 빼기

Oracle에서 숫자 1 = 1일이다.

-- 오늘 + 1일
SELECT SYSDATE + 1 
  FROM DUAL;

-- 오늘 + 7일
SELECT SYSDATE + 7 
  FROM DUAL;

 

날짜 차이 계산 ( 일 단위 )

SELECT TO_DATE('2025-12-31','YYYY-MM-DD') - TO_DATE('2025-12-01','YYYY-MM-DD')
  FROM DUAL;

 

* 결과: 30 (일 단위)

 

특정 날짜에 월( MONTH ) 더하기 / 빼기

  • 월 단위 연산은 ADD_MONTHS 사용한다.
-- 오늘 기준 1개월 후
SELECT ADD_MONTHS(SYSDATE, 1) 
  FROM DUAL;

-- 3개월 전
SELECT ADD_MONTHS(SYSDATE, -3) 
  FROM DUAL;
  
-- 말일 자동 처리
SELECT ADD_MONTHS(TO_DATE('2025-01-31','YYYY-MM-DD'), 1) 
  FROM DUAL;

 

연( YEAR ) 더하기 / 빼기

-- 1년 후
SELECT ADD_MONTHS(SYSDATE, 12) 
  FROM DUAL;

-- 2년 전
SELECT ADD_MONTHS(SYSDATE, -24) 
  FROM DUAL;

 

월의 첫날 / 마지막날 구하기

-- 월의 첫날
SELECT TRUNC(SYSDATE, 'MM') 
  FROM DUAL;
  
-- 월의 마지막날
SELECT LAST_DAY(SYSDATE) 
  FROM DUAL;

 

날짜 연산은 실무 SQL에서 정말 많이 쓰여 반드시 숙지해 보자. 날짜 연산을 정리해 보았으니  다음에는 WHERE 절 날짜 조건과 시간까지 포함한 날짜 조회 등을 정리해 보겠습니다. 감사합니다. (_ _)