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
'𝙎𝙌𝙇' 카테고리의 다른 글
[MySQL] REGEXP 정규표현식 (Regular Expression) (0) | 2023.01.14 |
---|---|
[MySQL] 두 테이블 합치기 : UNION / UNION ALL 차이 (0) | 2023.01.14 |
[MySQL] 조건문 CASE~WHEN / IF~ELSE (0) | 2023.01.13 |
[MySQL/ORACLE/MSSQL] 문자/날짜형 변환 (1) | 2023.01.12 |
[MySQL] 현재 날짜와 시각 정보 : sysdate 함수 (0) | 2023.01.12 |