SQL_날짜 비교하기

김채윤·2025년 11월 13일

오늘 푼 문제는 [조건별로 분류하여 주문상태 출력하기]

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

출고일자는 DATE형식이었다.

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

이렇게 풀었으나 말이 안 되는 데이터가 출력된다 이럴수가,,

문제점

1. DATE_FORMAT을 지정할 때 '%Y-%m-%d'로 사용한다

2. 날짜를 입력할 때 ''안에 사용하거나 DATE('날짜')를 사용해야 날짜로 인식된다.

나처럼 그냥 사용할 경우 숫자로 인식되어 '2022-05-01'은 날짜가 아닌 2016이 되어버리는 것!

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

수정하면 제대로 돌아가는 모습

예전에도 날짜를 ''안에 안 넣어서 제대로 안 나온적 있었는데 내가 자주 하는 실수 같으니 주의할 것!!

0개의 댓글