SQL 문제

문제 62. 자동차 대여 기록에서 장기/단기(난이도 7)(날짜 차이 구하기)

kagan-draca 2024. 7. 30. 15:47

 

2022년 9월에 속하는 대여 기록에 대해서 조회를 해야하기 때문에

 

대여 시작일 BETWEEN BETWEEN '2022-09-01' AND '2022-09-30'으로

 

9월이 대여 시작일인 튜플들만 조회 가능하게 만들었다.

 

그 후, 

 

CASE

WHEN 마지막 일 - 시작 일 >= 30 THEN '장기 대여'

ELSE '단기 대여'

END AS RENT_TYPE

 

으로 표현해줬는데, 정확한 '장기 대여', '단기 대여'를

구별하지 못 했다.

 

인터넷에서 날짜 차이 함수를 찾아보니

DATEDIFF(날짜1, 날짜2) : 날짜1 - 날짜2 차이를 일수로 반환

TIMESTAMPDIFF(단위, 날짜1, 날짜2) : 날짜1 - 날짜2 차이를 선택한 단위로 반환

 

단위표
SECOND
MINUTE
HOUR
DAY
WEEK
MONTH
QUARTER 분기
YEAR

 

이 있었다.

 

그래서, DATEDIFF(마지막 일, 시작 일) >= 30으로 바꿔줬는데

 

또 정상 출력되지 않았다.

 

알고 보니, DATEDIFF(마지막 일, 시작 일)하면

시작일 자체도 빠져 버려서 +1을 해줘야 했다.

 

따라서,

 

DATEDIFF(마지막 일, 시작 일) + 1 >= 30

로 날짜 차이를 구할 수 있었다.

 

제출한 코드 : 

 

SELECT HISTORY_ID, CAR_ID, SUBSTRING(START_DATE,1,10) AS START_DATE, SUBSTRING(END_DATE,1,10) 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