문제 풀이/프로그래머스 SQL

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

열심히 해 2024. 10. 31. 19:36

 

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

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

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 
	START_DATE LIKE '2022-09%'
ORDER BY 
	HISTORY_ID DESC

 

 

DATE_FORMAT 함수

DATE_FORMAT 함수는 날짜(DATE 타입) 또는 날짜와 시간을 포함한 값(DATETIME 타입)을 지정된 형식으로 문자열로 변환하는 함수입니다. 형식을 지정할 때는 포맷 문자열을 사용하여 출력할 날짜의 형식을 결정합니다.

 

구문: DATE_FORMAT(date, format)

  • date: 형식을 지정할 날짜 또는 시간 값.
  • format: 출력 형식을 지정하는 문자열. 예시로 %Y-%m-%d는 YYYY-MM-DD 형식으로 출력합니다.

 

예시:

DATE_FORMAT('2022-09-15', '%Y-%m')는 '2022-09'를 반환합니다.

 


 

DATEDIFF 함수

DATEDIFF 함수는 두 날짜 간의 일(day) 단위 차이를 정수로 반환합니다. DATEDIFF(end_date, start_date)는 end_date에서 start_date를 뺀 결과, 즉 두 날짜 간의 일수 차이를 반환합니다.

 

구문: DATEDIFF(end_date, start_date)

  • end_date: 끝나는 날짜.
  • start_date: 시작하는 날짜.

 

두 날짜가 동일한 경우에는 0을 반환하고, end_date가 더 늦은 경우 양수를, start_date가 더 늦은 경우 음수를 반환합니다.

 

예시:

**DATEDIFF('2022-09-30', '2022-09-01')**는 29를 반환합니다.