[자료구조] 알고리즘

[프로그래머스_Lv.1] 자동차 대여 기록에서 장기/단기 대여 구분하기 (MySQL)

콩지연 2024. 7. 27. 15:20

SQL도 연습해보자!

 


문제

 

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 


배운 점

 

두 날짜의 차이 구하기 timestampdiff

timestampdiff(단위, 날짜1, 날짜2)

단위 second, minute, hour, day, week, month, year
두 날짜 사이의 기간을 단위 값으로 계산할 수 있다.

조건
날짜2의 값이 날짜1의 값보다 더 미래가 되어야 한다.

ex)
timestampdiff(day, '2024-07-24', '2024-07-25')
output: 1일

 

주의할 점

반납 날짜-대여 날짜를 뺄셈 계산 하면 총 빌린 날짜+1일로 계산해야한다.

만약 2024.07.27에 대여하고, 2024.07.25에 반납한다면, 총 빌린 날짜는 2일이 되지만, 단순한 뺄셈 계산을 한다면 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,
    if(29<=timestampdiff(day, start_date, end_date), "장기 대여", "단기 대여") as RENT_TYPE
from CAR_RENTAL_COMPANY_RENTAL_HISTORY as c
where start_date between '2022-09-01' and '2022-09-30'
order by history_id desc;

 

 

(❁´◡`❁)

끝!