본문 바로가기
프로그래밍/SQL, Hive, SAS 관련 정보

[SQL 기초] 날짜 덧셈/뺄셈

by TrillionNT 2025. 3. 23.

2025.02.24 - [프로그래밍/SQL, Hive, SAS 관련 정보] - [SQL] Table of Contents


1. 특정 날짜에 대한 일정량의 덧셈/뺄셈

Oracle에서는 날짜형식의 데이터에 +1, -2와 같은 작업을 하면 알아서 날짜로 변환하여 연산결과를 반환해줍니다. 예를 들어, '2001-03-02'에 1을 더하면 자동으로 '2001-03-03'으로 계산됩니다. 반면, MySQL에서는 날짜형에 직접 숫자를 더하는 방식은 지원되지 않습니다. MySQL에서 날짜 연산을 하려면 DATE_ADD() 함수나 ADDDATE() 함수를 사용해야 합니다.

 

아래의 쿼리는 '2001-03-03'를 반환합니다. 

SELECT DATE_ADD('2001-03-02', INTERVAL 1 DAY) AS next_date;

 

만약 덧셈이 아니라 뺄셈을 하게되면 DATE_SUB 함수를 활용하면 됩니다. 아래 쿼리는 '2001-03-01'을 반환합니다.

SELECT DATE_SUB('2001-03-02', INTERVAL 1 DAY) AS previous_date;

 

꼭 일자 계산에만 적용되는 것은 아닙니다. 월 단위 계산도 아래와 같이 가능합니다.

SELECT DATE_SUB('2001-03-02', INTERVAL 1 MONTH) AS previous_month;

 

2. 날짜 간 연산

날짜와 날짜 간의 차이를 구하고 싶다면 DATEDIFF 함수를 쓰면 됩니다. Oracle/MySQL 공통 문법입니다. 

(1) Syntax

DATEDIFF(unit, start_date, end_date)

 

unit: 날짜 차이를 계산할 단위 (DAY, MONTH, YEAR 등)

(2) 활용 예시

SELECT DATEDIFF(DAY, '2024-01-01', '2024-03-23') AS date_diff;