문자열 및 날짜 조건으로 주문 상태 분류 및 표시

https://school.programmers.co.kr/learn/courses/30/lessons/131113

문제 설명

다음은 식품공장의 주문정보입니다.

음식 주문 테이블. 음식 주문 형식은 다음과 같습니다 주문 번호, 제품 번호, 수량, 생산 날짜, IN_DATE, OUT_DATE, FACTORY_ID, WAREHOUSE_ID는 각각 주문ID, 상품ID, 주문수량, 생산일자, 보관일자, 배송일자, 공장ID, 창고ID를 나타낸다.

열 이름유형Nullable

주문 번호 변수(10) 잘못된
제품 번호 변수(5) 잘못된
수량 숫자 잘못된
생산 날짜 날짜 진짜
IN_DATE 날짜 진짜
구식 날짜 진짜
공장 번호 변수(10) 잘못된
창고 번호 변수(10) 잘못된

질문

음식 주문 테이블에 주문ID, 상품ID, 배송일자, 상품출고여부를 조회하는 SQL문을 작성하고 시간은 5월 1일이다.

5월 1일 이전에 발송현황이 완료되고 그 이후 날짜가 발송보류로 설정되지 않은 경우에는 Pending으로 출력되며, 오름차순으로 정렬됩니다.


음식 주문 테이블이 생겼을 때

ORDER_IDPRODUCT_IDAMOUNTPRODUCE_DATEIN_DATEOUT_DATEFACTORY_IDWAREHOUSE_ID

OD00000051 P0002 4000 2022-04-01 2022-04-21 2022-04-21 FT19970003 WH0005
OD00000052 P0003 2500 2022-04-10 2022-04-27 2022-04-27 FT19970003 WH0006
OD00000053 P0005 6200 2022-04-15 2022-04-30 2022-05-01 FT19940003 WH0003
OD00000054 P0006 1000 2022-04-21 2022-04-30 유효하지 않은 FT19940003 WH0009
OD00000055 P0008 1500 2022-04-25 2022-05-11 2022-05-11 FT19980003 WH0009

SQL을 실행하면 다음과 같이 출력됩니다.

ORDER_IDPRODUCT_IDOUT_DATE 배송 상태

OD00000051 P0002 2022-04-21 배송완료
OD00000052 P0003 2022-04-27 배송완료
OD00000053 P0005 2022-05-01 배송완료
OD00000054 P0006 우유부단한
OD00000055 P0008 2022-05-11 배달 대기

내 솔루션

SELECT  ORDER_ID,PRODUCT_ID,date_format(OUT_DATE,"%Y-%m-%d") OUT_DATE,
    case
    when OUT_DATE <= date("2022-05-01") then "출고완료"
    when OUT_DATE is null then "출고미정"
    else "출고대기" end "출고여부"
from FOOD_ORDER

order by ORDER_ID

처음으로 풀었어요 when OUT_DATE <= 2022-05-01 그럼 "출고"될 줄 알았는데 계산식이라 이해가 되서 정답이 안 나왔네요.

이를 수정하기 위해 날짜 함수를 통해 날짜 데이터로 변환하여 해결했습니다.

추신 “2022-05-01″이라고 해도 결과는 정답