https://school.programmers.co.kr/learn/courses/30/lessons/151138
# MySQL - SOL.1 - DATEDIFF(끝 날짜, 시작 날짜) & WHERE LIKE '% %'
SELECT HISTORY_ID
, CAR_ID
, DATE_FORMAT(START_DATE, '%Y-%m-%d') AS START_DATE
, DATE_FORMAT(END_DATE, '%Y-%m-%d') 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 LIKE '2022-09%'
ORDER BY HISTORY_ID DESC;
# MYSQL - SOL.2 - BETWEEN
SELECT HISTORY_ID
, CAR_ID
, DATE_FORMAT(START_DATE, '%Y-%m-%d') AS START_DATE
, DATE_FORMAT(END_DATE, '%Y-%m-%d') 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 00:00:00' AND '2022-09-30 23:59:59'
ORDER BY HISTORY_ID DESC;
# MYSQL - SOL.3 - WHERE EXTRACT(열 FROM 테이블) =
SELECT HISTORY_ID
, CAR_ID
, DATE_FORMAT(START_DATE, '%Y-%m-%d') AS START_DATE
, DATE_FORMAT(END_DATE, '%Y-%m-%d') 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 EXTRACT(YEAR_MONTH FROM START_DATE) = 202209
ORDER BY HISTORY_ID DESC;
** CASE WHEN THEN문 : 조건에 해당하는 값을 반환하는 함수
CASE
WHEN 조건1 THEN 값1
ELSE 값2
END
# 조건1을 만족하면 값1, 만족하지 않으면 값2를 반환한다
** DATE_FORMAT(날짜, 형식) : 날짜 데이터 출력 형식
** DATEDIFF() : 두 날짜를 비교하여 날짜의 차이 계산
- DATEDIFF(DAY, '시작 날짜' , '끝나는 날짜' ) AS [일 차이]
- DATEDIFF(MONTH, '시작 날짜' , '끝나는 날짜' ) AS [월 차이]
- DATEDIFF(YEAR, '시작 날짜' , '끝나는 날짜' ) AS [년 차이]
'Computer language > SQL' 카테고리의 다른 글
[프로그래머스/SQL 고득점 Kit] SELECT - 3월에 태어난 여성 회원 목록 출력하기 (1) | 2024.11.09 |
---|---|
[프로그래머스/SQL 고득점 Kit] SELECT - 재구매가 일어난 상품과 회원 리스트 구하기 (1) | 2023.02.23 |
[프로그래머스/SQL 고득점 Kit] String, Date - 특정 옵션이 포함된 자동차 리스트 구하기 (0) | 2023.02.17 |
[프로그래머스/SQL 고득점 Kit] IS NULL - 나이 정보가 없는 회원 수 구하기 (0) | 2023.02.17 |
[프로그래머스/SQL 고득점 Kit] IS NULL - 이름이 있는 동물의 아이디 (0) | 2023.02.17 |