조건별로 분류하여 주문상태 출력하기
https://school.programmers.co.kr/learn/courses/30/lessons/131113
문제 풀이
1 2 3 4 5 6 7 8 9 10 11
SELECT ORDER_ID, PRODUCT_ID, TO_CHAR(OUT_DATE, 'YYYY-MM-DD') AS "OUT_DATE", CASE WHEN OUT_DATE <= TO_DATE(20220501, 'YYYY-MM-DD') THEN '출고완료' WHEN OUT_DATE > TO_DATE(20220501, 'YYYY-MM-DD') THEN '출고대기' WHEN OUT_DATE IS NULL THEN '출고미정' END AS "출고여부" FROM FOOD_ORDER ORDER BY ORDER_ID;
1 2 3 4 5 6 7 8 9 10 11 12 13
SELECT ORDER_ID, PRODUCT_ID, TO_CHAR(OUT_DATE, 'YYYY-MM-DD') AS OUT_DATE, CASE WHEN TO_DATE('2022-05-01', 'YYYY-MM-DD') >= OUT_DATE THEN '출고완료' WHEN OUT_DATE > TO_DATE('2022-05-01', 'YYYY-MM-DD') THEN '출고대기' ELSE '출고미정' END AS "출고여부" FROM FOOD_ORDER ORDER BY ORDER_ID ASC;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
WITH SAMPLE AS ( SELECT ORDER_ID , PRODUCT_ID , OUT_DATE FROM FOOD_ORDER ) SELECT ORDER_ID , PRODUCT_ID , TO_CHAR(OUT_DATE, 'YYYY-MM-DD') , CASE WHEN OUT_DATE <= TO_DATE('2022-05-01', 'YYYY-MM-DD') THEN '출고완료' WHEN OUT_DATE IS NULL THEN '출고미정' ELSE '출고대기' END FROM SAMPLE ORDER BY ORDER_ID;
- 날짜 데이터를 문자열로 변환하는
TO_CHAR
함수를 사용하는 이유는 날짜 데이터를 원하는 형식으로 표시하기 위한 것이다. - 날짜 데이터를 직접 비교할 때 형식에 따라 문제가 발생할 수 있으므로 특정 형식으로 변환하여 비교하는 것이 일반적으로 좋은 방법이다.
- 예를 들어, 날짜가 ‘2022-05-01’ 형식으로 저장되어 있지만 데이터베이스 시스템이 다른 형식으로 날짜를 저장하는 경우, 직접 비교하면 오류가 발생할 수 있다.
- 날짜 데이터를 문자열로 변환하는
- 실행 결과
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.