[프로그래머스] 조건별로 분류하여 주문상태 출력하기

yannie·2024년 9월 30일
0

[문제]

FOOD_ORDER 테이블에서 2022년 5월 1일을 기준으로 주문 ID, 제품 ID, 출고일자, 출고여부를 조회하는 SQL문을 작성해주세요. 출고여부는 2022년 5월 1일까지 출고완료로 이 후 날짜는 출고 대기로 미정이면 출고미정으로 출력해주시고, 결과는 주문 ID를 기준으로 오름차순 정렬해주세요.

[내가 푼 풀이(오답)]

-- 코드를 입력하세요
SELECT
    ORDER_ID,
    PRODUCT_ID,
    DATEFORMAT(OUT_DATE, '%Y-%m-%d') AS OUT_DATE,
    CASE
        WHEN DATEDIFF(OUT_DATE, '2022-05-01') <= 0 THEN '출고완료'
        WHEN DATEDIFF(OUT_DATE, '2022-05-01') > 0 THEN '출고미정'
        ELSE '출고대기'
    END AS '출고여부'
FROM FOOD_ORDER
ORDER BY ORDER_ID
;
  • DATEFORMAT(X) -> DATE_FORMAT(O)

[내가 푼 풀이(정답)]

SELECT
    ORDER_ID,
    PRODUCT_ID,
    DATE_FORMAT(OUT_DATE, '%Y-%m-%d') AS OUT_DATE,
    CASE
        WHEN DATEDIFF(OUT_DATE, '2022-05-01') <= 0 THEN '출고완료'
        WHEN DATEDIFF(OUT_DATE, '2022-05-01') > 0 THEN '출고대기'
        ELSE '출고미정'
    END AS '출고여부'
FROM FOOD_ORDER
ORDER BY ORDER_ID
;

[코드리뷰]

  • DATE_FORMAT()함수를 사용하여 출력문을 특정형식으로 날짜를 변환
  • DATEDIFF()함수를 사용하여 날짜 간의 차이를 계산
    • 차이가 0보다 작거나 같다면 2022년 5월 1일 이전 + 5월 1일
    • 차이가 0보다 크다면 2022년 5월 1일 이후
  • CASE WHEN절을 사용하여 조건에 따른 출력문 설정

기억해!

MySql에서는 DATE_FORMAT()함수를 사용하여 특정형식으로 날짜를 변환한다.
날짜 간의 차이를 구하는 함수는 DATEDIFF()

0개의 댓글