본문 바로가기

데이터베이스/SQL

[프로그래머스] MySQL 자동차 대여 기록에서 장기/단기 대여 구분하기 Lv1 [엄탱]

728x90

문제 링크

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

문제

테이블에서 대여 시작일이 2022년 9월에 속하는 대여 기록에 대해서 대여 기간이 30일 이상이면 '장기 대여' 그렇지 않으면 '단기 대여' 로 표시하는 컬럼(컬럼명: RENT_TYPE)을 추가하여 대여기록을 출력하는 SQL문을 작성해주세요. 결과는 대여 기록 ID를 기준으로 내림차순 정렬해주세요.

코드

SELECT 
    c.HISTORY_ID,
    c.CAR_ID,
    DATE_FORMAT(c.START_DATE, '%Y-%m-%d') as START_DATE,
    DATE_FORMAT(c.END_DATE, '%Y-%m-%d') as END_DATE,
    IF(DATEDIFF(END_DATE, START_DATE) >= 29, '장기 대여', '단기 대여') as RENT_TYPE
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY as c
WHERE c.START_DATE >= '2022-09-01' AND c.START_DATE < '2022-10-01'
ORDER BY c.HISTORY_ID DESC;

공부한 내용 및 해설

MySQL 관련 내용입니다.

  • DATEDIFF
    • 두 날짜간의 차이를 가져오는 함수이며, 반환 값은 일을 기준으로 한다.
    • DATEDIFF(날짜1, 날짜2) 이며 날짜의 형식은 일치 하지 않아도 된다.
    • DATEDIFF(20220915, 2022-09-14) 는 1을 반환한다.
  • TIMESTAMPDIFF
    • 두 날짜간의 차이를 가져오는 함수이며, 반환 값은 연, 분기, 월, 주, 일, 시, 분, 초로 지정할 수 있다.
    • TIMESTAMPDIFF(단위, 날짜1, 날짜2)
    • 단위 
      • SECOND : 초
      • MINUTE : 분
      • HOUR : 시
      • DAY : 일
      • WEEK : 주
      • MONTH : 월
      • QUARTER : 분기
      • YEAR : 연
728x90