SQL - 날짜 더하기 & 빼기 정리

hyun-jin·2025년 3월 17일

데이터 분석

목록 보기
21/100
post-thumbnail

데이터 분석 19일차

✅ 1. 날짜 더하기 (DATE_ADD)

연산SQL코드
하루 더하기SELECT DATE_ADD('2024-03-17', INTERVAL 1 DAY);'2024-03-18'
일주일 더하기SELECT DATE_ADD('2024-03-17', INTERVAL 7 DAY);'2024-03-24'
한 달 더하기SELECT DATE_ADD('2024-03-17', INTERVAL 1 MONTH);'2024-04-17'
1년 더하기SELECT DATE_ADD('2024-03-17', INTERVAL 1 YEAR);'2025-03-17'

💡 + INTERVAL을 사용한 간단한 표현

SELECT '2024-03-17' + INTERVAL 1 DAY;  -- 2024-03-18

✅ 2. 날짜 빼기 (DATE_SUB 또는 DATE_ADD에서 -1 사용)

연산SQL코드
하루 빼기 (DATE_SUB)SELECT DATE_SUB('2024-03-17', INTERVAL 1 DAY);'2024-03-16'
하루 빼기 (DATE_ADD에서 -1 사용)SELECT DATE_ADD('2024-03-17', INTERVAL -1 DAY);'2024-03-16'
일주일 빼기SELECT DATE_SUB('2024-03-17', INTERVAL 7 DAY); '2024-03-10'
한 달 빼기SELECT DATE_SUB('2024-03-17', INTERVAL 1 MONTH);'2024-02-17'

💡 - INTERVAL을 사용한 간단한 표현

SELECT '2024-03-17' - INTERVAL 1 DAY;  -- 2024-03-16

✅ 3. 현재 날짜/시간에서 더하기 & 빼기

연산SQL 코드
현재 날짜에서 하루 더하기SELECT DATE_ADD(CURDATE(), INTERVAL 1 DAY);
현재 날짜에서 한 달 빼기SELECT DATE_SUB(CURDATE(), INTERVAL 1 MONTH);
현재 날짜에서 1년 더하기SELECT DATE_ADD(NOW(), INTERVAL 1 YEAR);

✅ 4. JOIN에서 날짜 연산 활용

📍 JOIN에서 DATE_ADD()와 DATE_SUB()를 사용할 때 주의할 점

recorddatetemperature
2024-03-1715
2024-03-1818
2024-03-1920
2024-03-2022

🔹 (1) 하루 더한 값으로 JOIN

SELECT * 
FROM weather a
JOIN weather b ON a.recorddate = DATE_ADD(b.recorddate, INTERVAL 1 DAY);
  • b.recorddate + 1일이 a.recorddate와 같은 행을 매칭
  • 즉, b의 날짜가 a보다 하루 전날 데이터를 가져옴
recorddate_a (a)temperature_a (a)recorddate_b (b)temperature_b (b)
2024-03-18182024-03-1715
2024-03-19202024-03-1818
2024-03-20222024-03-1920

📌 해석:

  • b.recorddate 값에 +1일을 더해준 값이 a.recorddate와 같아야 하니,
    → b 테이블의 날짜는 a보다 하늘 전의 데이터를 가지게 됩니다.

sql 문제 풀다 마주한 하루 전날의 온도 차이 구하기... 이런 방법이 있었다니!

0개의 댓글