62. SQL - DATEDIFF, DATE_ADD, DATE_SUB

Jason·2026년 2월 1일

SQL

목록 보기
45/47

SQL 내가 틀린 것들 #62 — 날짜 함수: DATEDIFF, DATE_ADD, DATE_SUB


🤔 문제 상황

근무일수를 구하려고 DATE_SUB을 썼다...

-- ❌ 틀림!
DATE_SUB('2026-02-01', hire_date) AS work_days

DATE_SUB은 일수 계산이 아니다!


💡 날짜 함수 3총사!

함수역할결과
DATEDIFF며칠 차이?숫자
DATE_ADDN일 후 날짜?날짜
DATE_SUBN일 전 날짜?날짜

1️⃣ DATEDIFF — 며칠 차이? (숫자 반환!)

DATEDIFF(끝날짜, 시작날짜)

예시

DATEDIFF('2026-02-01', '2020-03-01')2163 (숫자!)
DATEDIFF('2024-03-15', '2024-01-01')74

큰 날짜가 먼저! (끝 - 시작)

실전: 근무일수 계산

SELECT
  name,
  DATEDIFF('2026-02-01', hire_date) AS work_days
FROM employees

2️⃣ DATE_ADD — N일 후? (날짜 반환!)

DATE_ADD(날짜, INTERVAL N 단위)

예시

DATE_ADD('2024-06-01', INTERVAL 30 DAY)'2024-07-01'
DATE_ADD('2024-06-01', INTERVAL 3 MONTH)'2024-09-01'
DATE_ADD('2024-06-01', INTERVAL 1 YEAR)'2025-06-01'

실전: 쿠폰 만료일 계산

SELECT
  user_name,
  DATE_ADD(issued_date, INTERVAL 30 DAY) AS expire_date
FROM coupons

3️⃣ DATE_SUB — N일 전? (날짜 반환!)

DATE_SUB(날짜, INTERVAL N 단위)

예시

DATE_SUB('2026-02-01', INTERVAL 30 DAY)'2026-01-02'
DATE_SUB('2026-02-01', INTERVAL 3 MONTH)'2025-11-01'

⚠️ 내가 헷갈린 것!

DATEDIFF vs DATE_SUB

-- "며칠 차이?" → DATEDIFF (숫자!)
DATEDIFF('2026-02-01', '2020-03-01')2163

-- "30일 전 날짜?" → DATE_SUB (날짜!)
DATE_SUB('2026-02-01', INTERVAL 30 DAY)'2026-01-02'
함수인자결과
DATEDIFF(끝, 시작)날짜 2개숫자
DATE_SUB(날짜, INTERVAL N DAY)날짜 + 숫자날짜

DATE_SUB에 날짜 2개 못 넣어! INTERVAL 형태로만!


💡 INTERVAL 단위

단위의미
DAY
MONTH
YEAR
HOUR시간

윤년, 월별 일수 다 SQL이 알아서 처리! 😎


📌 정리

하고 싶은 것함수
며칠 차이?DATEDIFF(끝, 시작) → 숫자
N일 후 날짜?DATE_ADD(날짜, INTERVAL N DAY) → 날짜
N일 전 날짜?DATE_SUB(날짜, INTERVAL N DAY) → 날짜

날짜 = DATEDIFF(숫자) vs DATE_ADD/SUB(날짜)! 💪

업로드중..

profile
Data Analyst | Thoughts Become Things. 할 수 있다고 생각하면 할 수 있다. 할 수 없다고 생각하면 할 수 없다. | www.linkedin.com/in/명수-제-7ab843200

0개의 댓글