[MySQL] 프로그래머스 Lv1 - 자동차 대여 기록에서 장기/단기 대여 구분하기

찐새·2023년 5월 23일
0

코딩테스트

목록 보기
52/53
post-thumbnail

자동차 대여 기록에서 장기/단기 대여 구분하기

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)+1 >= 30) then "장기 대여"
else "단기 대여" end as RENT_TYPE
from CAR_RENTAL_COMPANY_RENTAL_HISTORY
where DATE_FORMAT(START_DATE, '%Y-%m') = '2022-09'
order by HISTORY_ID desc;

풀이

날짜 차이를 반환해주는 함수인 DATEDIFF를 사용하여 대여 기간에 따른 새 컬럼을 생성했다. DATEDIFF(날짜1, 날짜2)는 앞 날짜에서 뒤 날짜를 뺀 값을 반환한다. 다만, 시작일은 포함하지 않는 듯하여 +1을 해줘야 정답이 나왔다. 1부터 9까지는 9개의 숫자가 포함되지만, 9 - 1 = 8인 것과 비슷한 셈이다.

그 외, 조건문인 case when (조건) then 결과 else 결과 end, 날짜 포맷인 DATE_FORMAT(날짜, '포맷')을 사용했다.

profile
프론트엔드 개발자가 되고 싶다

0개의 댓글