본문 바로가기
코딩테스트/programming_SQL

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

by prometedor 2023. 9. 4.

DATE_FORMAT, DATEDIFF, CASE~WHEN~THEN~ELSE ~END 이용하기

DATE_FORMAT

DATE_FORMAT('변환할 날짜', '%Y-%m-%d')

ㄴ yyyy-mm-dd 형식으로 날짜 포맷을 변환 가능

 

DATEDIFF

DATEDIFF(END_DATE, START_DATE) + 1

ㄴ 날짜 차이 값 구하기

ㄴ 30일부터 장기 대여이므로 + 1 을 해줘야 함

 

CASE~WHEN~THEN~ELSE ~END 

CASE
	WHEN 조건
	THEN '반환 값'
	WHEN 조건
	THEN '반환 값'
	ELSE 'WHEN 조건에 해당 안되는 경우 반환 값'
END

ㄴ MySQL 의 case 문 분법

 

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

 

프로그래머스

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

programmers.co.kr

 

 

 

SELECT
    HISTORY_ID,
    CAR_ID,
    DATE_FORMAT(START_DATE, '%Y-%m-%d') START_DATE,
    DATE_FORMAT(END_DATE, '%Y-%m-%d') END_DATE,
    CASE
        WHEN DATEDIFF(END_DATE, START_DATE) + 1 >= 30 
        THEN '장기 대여'
        ELSE '단기 대여'
    END AS RENT_TYPE
FROM
    CAR_RENTAL_COMPANY_RENTAL_HISTORY
WHERE
    YEAR(START_DATE) = 2022 AND MONTH(START_DATE) = 9
ORDER BY
    HISTORY_ID DESC;