1. DATEDIFF(date1, date2)
- 설명: 두 날짜 간의 일(day) 차이를 계산
- 반환값: 정수 (일 단위)
- 계산 방식: date1 - date2, 즉 첫 번째 인자에서 두 번째 인자를 뺀 일수
🔹 예시:
SELECT DATEDIFF('2025-06-10', '2025-06-01') AS day_diff;
-- 결과: 9
SELECT DATEDIFF('2025-06-01', '2025-06-10') AS day_diff;
-- 결과: -9
📌 시간(HH:MM:SS)은 무시되고, 날짜(YYYY-MM-DD)만 고려
2. TIMESTAMPDIFF(unit, datetime1, datetime2)
- 설명: 두 날짜/시간 사이의 차이를 지정한 단위로 계산
- 지원 단위:
- YEAR, MONTH, DAY, HOUR, MINUTE, SECOND, WEEK, QUARTER, MICROSECOND
- 계산 방식: datetime2 - datetime1 에 대한 차이를 단위로 환산
🔹 예시:
SELECT TIMESTAMPDIFF(DAY, '2025-06-01', '2025-06-10') AS diff_day;
-- 결과: 9
SELECT TIMESTAMPDIFF(HOUR, '2025-06-01 10:00:00', '2025-06-01 15:00:00') AS diff_hour;
-- 결과: 5
SELECT TIMESTAMPDIFF(MINUTE, '2025-06-01 10:00:00', '2025-06-01 10:30:00') AS diff_minute;
-- 결과: 30
SELECT TIMESTAMPDIFF(YEAR, '2000-01-01', '2025-06-01') AS diff_year;
-- 결과: 25
📌TIMESTAMPDIFF는 날짜뿐 아니라 시간까지도 정밀하게 차이를 구할 수 있다.
🔍 주요 차이 요약
항목 | DATEDIFF | TIMESTAMPDIFF |
리턴 단위 | **일(DAY)**만 | 사용자가 지정한 단위 (예: YEAR, HOUR 등) |
시간 계산 여부 | 시간은 무시하고 날짜만 비교 | 시간 포함 가능 |
인자 순서 | DATEDIFF(date1, date2) | TIMESTAMPDIFF(unit, datetime1, datetime2) |
결과 음수 가능 | O | O |
정밀도 | 낮음 (날짜 단위만) | 높음 (시, 분, 초까지 가능) |
🧪 실제 활용 예시
회원 가입 후 며칠 지났는지 확인
SELECT DATEDIFF(NOW(), created_at) AS days_since_signup
FROM users;
최근 주문까지 몇 분 걸렸는지 확인
SELECT TIMESTAMPDIFF(MINUTE, order_placed_at, order_delivered_at) AS delivery_minutes
FROM orders;