https://school.programmers.co.kr/learn/courses/30/lessons/131113
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
코드설명
DATE_FORMAT + CASE WHEN 을 활용합니다.
출고일이 2022-05-01 보다 앞에 있다면 이미 '출고완료' 한것입니다.
출고일이 2022-05-01 보다 크다면 '출고미정'입니다.
그외의 모든것은 '출고대기'입니다. (즉 NULL인 상황입니다.)
코드
SELECT FO.ORDER_ID, FO.PRODUCT_ID, DATE_FORMAT(FO.OUT_DATE, '%Y-%m-%d') AS OUT_DATE,
CASE
WHEN FO.OUT_DATE IS NULL THEN '출고미정'
WHEN DATEDIFF('2022-05-01', FO.OUT_DATE) >= 0 THEN '출고완료'
ELSE '출고대기'
END AS '출고여부'
FROM FOOD_ORDER AS FO
ORDER BY FO.ORDER_ID ASC
ORACLE
ORACLE에서는 DATEDIFF와 같은 함수없이, 날짜의 형식만 맞춰주면 됩니다.
FO.OUT_DATE(TYPE : DATE)를 TO_CHAR로 변환시켜도되고,
SELECT FO.ORDER_ID, FO.PRODUCT_ID, TO_CHAR(FO.OUT_DATE, 'YYYY-MM-DD'),
CASE
WHEN TO_CHAR(FO.OUT_DATE, 'YYYY-MM-DD') > '2022-05-01' THEN '출고대기'
WHEN TO_CHAR(FO.OUT_DATE, 'YYYY-MM-DD') <= '2022-05-01' THEN '출고완료'
ELSE '출고미정'
END AS 출고여부
FROM FOOD_ORDER FO
ORDER BY FO.ORDER_ID ASC;
'2022-05-01'을 TO_DATE로 변환시켜서 대소 비교를 해도됩니다.
SELECT FO.ORDER_ID, FO.PRODUCT_ID, TO_CHAR(FO.OUT_DATE, 'YYYY-MM-DD'),
CASE
WHEN FO.OUT_DATE > TO_DATE('2022-05-01','YYYY-MM-DD') THEN '출고대기'
WHEN FO.OUT_DATE <= TO_DATE('2022-05-01','YYYY-MM-DD') THEN '출고완료'
ELSE '출고미정'
END AS 출고여부
FROM FOOD_ORDER FO
ORDER BY FO.ORDER_ID ASC;