Computer language/SQL

[프로그래머스/SQL 고득점 Kit] String, Date - 자동차 대여 기록에서 장기/단기 대여 구분하기

제티맛초코 2023. 2. 17. 21:31

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 [년 차이]

 


https://gent.tistory.com/430

 

[MSSQL] 날짜, 시간 차이 일수 계산 (DATEDIFF)

SQL Server에서 시작일자와 종료일자 사이의 일수 또는 시간, 분, 초 등의 차이를 계산할 때 DATEDIFF 함수를 사용한다. DATEDIFF 함수는 두 날짜를 비교하여 DATEPART 구분자에 따라서 차이를 계산하여 결

gent.tistory.com

 

 

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

안녕하세요! 데코입니다! 오늘은 프로그래머스 코딩테스트 연습에 있는 "자동차 대여 기록에서 장기/단기 대여 구분하기" 문제를 포스팅하려고 합니다! 바로 포스팅 시작할게요! :) (출처 : https:/

kkw-da.tistory.com