𝙎𝙌𝙇

[MySQL] 날짜 차이 구하기 : DATEDIFF / TIMESTAMPDIFF

콜라맛갈비 2023. 1. 13. 00:37
728x90

날짜 차이 구하기 : DATEDIFF / TIMESTAMPDIFF

- DATEDIFF(날짜1, 날짜2)  : 날짜1 - 날짜2 

     * 날짜2가 더 이전 날짜면 양수 값 리턴

      * EX) DATEDIFF('2023/01/13', '2022/01/13')   ->  365

 

 

- TIMESTAMPDIFF(단위, 날짜1, 날짜2)  : 날짜2 - 날짜1

     * 날짜1이 더 이전 날짜면 양수 값 리턴

      * EX) TIMESTAMPDIFF(DAY, '2022/01/13', '2023/01/13')  ->  365

    [단위]

  • SECOND : 초
  • MINUTE : 분
  • HOUR : 시
  • DAY : 일
  • WEEK : 주
  • MONTH : 월
  • QUARTER : 분기
  • YEAR : 연

 

 

EX) 프로그래머스 - 자동차 대여 기록 별 대여 금액 구하기

SELECT HISTORY_ID, ROUND((DAILY_FEE * (100 - IFNULL(DISCOUNT_RATE, 0))/100) * PERIOD) FEE
FROM 
(SELECT *, TIMESTAMPDIFF(DAY, START_DATE, END_DATE) + 1 AS PERIOD, 
	CASE WHEN TIMESTAMPDIFF(DAY, START_DATE, END_DATE) + 1 >= 90 THEN '90일 이상'
		WHEN TIMESTAMPDIFF(DAY, START_DATE, END_DATE) + 1 >= 30 THEN '30일 이상'
		WHEN TIMESTAMPDIFF(DAY, START_DATE, END_DATE) + 1 >= 7 THEN '7일 이상'
		ELSE '7일 미만' END AS DURATION_TYPE
FROM CAR_RENTAL_COMPANY_CAR C JOIN CAR_RENTAL_COMPANY_RENTAL_HISTORY H USING (CAR_ID)) A 
LEFT JOIN CAR_RENTAL_COMPANY_DISCOUNT_PLAN D USING (CAR_TYPE, DURATION_TYPE)
WHERE CAR_TYPE = '트럭'
ORDER BY FEE DESC, HISTORY_ID DESC

 

 

728x90