PRACTICE/SQL

[MySQL] 1단계 28. 자동차 대여 기록에서 장기/단기 대여 구분하기

j1ngerhead 2024. 12. 6. 00:32

 

문제 링크

https://school.programmers.co.kr/learn/courses/30/lessons/151138

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) >= 29 THEN '장기 대여'
           ELSE '단기 대여'
       END AS RENT_TYPE
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
WHERE START_DATE LIKE '2022-09%'
ORDER BY HISTORY_ID DESC;

 

DATEDIFF() 함수는 해당 문제에서 구해야 하는
END_DATE와 START_DATE 사이의 일수를 구해준다. (24시간 기준이 아니라 날짜 기준임 !!!)
ㄴ> ex ) SELECT DATEDIFF('2024-10-22 00:00:00', '2024-10-23 18:00:00');
ㄴ> 결과 : 1
ㄴ> 시간으로 보면 하루(24시간) 차이가 아닌데 일수로 보면 1이 되는 것

대여일부터 1일차라 단순히 날짜 차이를 기준으로 하면 29일 이상부터 장기임
대여를 하고 같은 날 반납을 하는 경우는 대여기간을 1일로 친다.
ㄴ> 그래서 30일 이상을 확인하려면 조건을 >= 30에서 >= 29로 바꾸니까 맞음 !

320x100