https://school.programmers.co.kr/learn/courses/30/lessons/151138
1차 (틀, 왜지..?)
SELECT
history_id,
car_id,
DATE_FORMAT(start_date, '%Y-%m-%d') as start_date,
DATE_FORMAT(end_date, '%Y-%m-%d') as end_date,
CASE
WHEN DATEDIFF(end_date, start_date) >= 30 THEN '장기 대여'
ELSE '단기 대여' END
AS RENT_TYPE
FROM
car_rental_company_rental_history
WHERE
start_date like '2022-09%'
ORDER BY
history_id desc;
2차 (틀, 날짜를 문자열로 체크해서 그런가? 해서 고쳐봤는데 틀)
-- 코드를 입력하세요
SELECT
history_id,
car_id,
DATE_FORMAT(start_date, '%Y-%m-%d') as start_date,
DATE_FORMAT(end_date, '%Y-%m-%d') as end_date,
CASE
WHEN DATEDIFF(end_date, start_date) >= 30 THEN '장기 대여'
ELSE '단기 대여' END
AS RENT_TYPE
FROM
car_rental_company_rental_history
WHERE
start_date BETWEEN '2022-09-01' and '2022-09-30'
ORDER BY
history_id desc;
3차 맞음 ( 아 예전에 했던 실수 또했다 )
-- 코드를 입력하세요
SELECT
history_id,
car_id,
DATE_FORMAT(start_date, '%Y-%m-%d') as start_date,
DATE_FORMAT(end_date, '%Y-%m-%d') as end_date,
CASE
WHEN (DATEDIFF(end_date, start_date)+1) >= 30 THEN '장기 대여'
ELSE '단기 대여' END
AS RENT_TYPE
FROM
car_rental_company_rental_history
WHERE
start_date BETWEEN '2022-09-01' and '2022-09-30'
ORDER BY
history_id desc;
바로 이 부분이 문제였다. 이전에 했던 실수인데 하..
WHEN (DATEDIFF(end_date, start_date)+1
) >= 30 THEN '장기 대여'
저기 +1 보이나? 저거 때문이다.
예를 들어서 그런 이야기다.
내가 22년 9월 1일에 빌려서 그날 반납하면 대여기간을 0일로 처리하면 안되고 1일로 처리해야한다. 그런데 나는 0일로 처리했던거.. 그래서 +1을 해줘야 한다. 그걸로 계산해야하고..! 제발 실수말자