프로그래머스 SQL - 62번(날짜 계산 +1 해주는 이유)

yeyeyeyeye·2025년 7월 30일

📅 SQL에서 날짜 차이에 +1을 해주는 이유는?
SQL에서 두 날짜 간의 차이를 구할 때 흔히 DATEDIFF() 또는 end_date - start_date를 사용합니다.
그런데 여기에 +1을 해주는 경우가 종종 등장하는데, 왜 그럴까요?

시작일과 종료일을 모두 포함해야 하는 경우에 +1 해준다.
많은 실무 상황에서는 시작일과 종료일을 포함한 전체 기간이 필요.
즉, 당일 대여도 1일로 간주해야 하는 경우가 대부분.


기본 개념: DATEDIFF()의 반환값


SELECT DATEDIFF('2022-09-30', '2022-09-01'); -- 결과: 29

DATEDIFF(A, B)는 A - B의 일수 차이를 반환합니다.

하지만 이건 "두 날짜 사이의 간격"만 계산한 값입니다.

예를 들어, 9월 1일부터 9월 30일까지 대여한 경우,
실제 사용자는 30일 동안 대여했지만, DATEDIFF는 29만 반환합니다.


-- 예: 2022-09-01부터 2022-09-01까지 대여
SELECT DATEDIFF('2022-09-01', '2022-09-01'); -- 결과: 0 (하지만 실제로는 1일 대여)

-- 해결: +1
SELECT DATEDIFF('2022-09-01', '2022-09-01') + 1; -- 결과: 1 ✅

실전 예시: 장기 대여 구분

SELECT *,
       CASE 
           WHEN DATEDIFF(end_date, start_date) + 1 >= 30 THEN '장기 대여'
           ELSE '단기 대여'
       END AS RENT_TYPE
FROM car_rental_company_rental_history;

이 쿼리는 대여 기간이 30일 이상인지 판단할 때 사용되며, +1을 통해 대여 시작일과 종료일을 모두 포함한 정확한 기간을 계산합니다.


요약 정리
DATEDIFF(A, B): A일 - B일의 차이(간격)만 반환 (종료일 미포함)
DATEDIFF(A, B) + 1 : 시작일과 종료일 둘 다 포함한 전체 기간. 실무 적용 대여일 수, 입원 기간, 체류 기간 등에서 자주 사용됨

결론
날짜 차이에 +1을 하는 이유는, 시작일과 종료일을 모두 포함한 "전체 사용 일수"를 구하기 위해서입니다.

profile
안녕하세요? 데이터분석가 되고 싶어요.

0개의 댓글