일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
- Programmers
- 스마트팜코리아
- 농정원
- 자동화
- Python
- 농촌진흥청
- 데이터분석
- 리눅스 자동화 스크립트
- cron과 crontab 차이
- 유사도
- group by
- 리눅스 crontab 사용법
- SQL
- cron 스케줄 설정
- solvesql
- DTW
- 인터랙티브 차트
- 웹앱
- streamlit
- 생육
- 스마트팜
- 농림수산식품교육문화정보원
- join
- 주기적 실행
- 대시보드
- Algorithm
- 데이터
- 공유
- 시계열 시각화
- ML
- Today
- Total
Positive-Influence-Data
[SQL] MYSQL - DATE_FORMAT 본문
❗ 본 포스팅은 Programmers의 SQL 고득점 Kit의 문제를 활용합니다. 다양한 SQL 문제를 풀어보고 싶다면
Programmers를 방문하세요.
SQL문을 작성하다보면 날짜 형태의 값들을 만날 수 있다.
위의 사진처럼 PRODUCT_ID, IN_DATE, OUT_DATE가 대표적인 예이다.
이런 데이터 타입은 문자열로도 슬라이싱이 가능하다.(SUBSTR로 슬라이싱가능)
-- Programmers 조건별로 분류하여 주문상태 출력하기
SELECT SUBSTR(IN_DATE,1,4)
FROM FOOD_ORDER;
위 처럼 SQL을 작성하게 되면 '2022'만 쭉 출력되게 될 것이다. 이렇게 문제를 푸는것도 가능하다.
하지만 DATE끼리 비교를 하게 된다면 문자열로 슬라이싱하기가 조금 복잡해질 수 있다.
** 필자가 그랬네요..
복잡하게 풀지않기위해 DATE_FORMAT을 이용해보자.
문제가 주어졌는데 5월 1일과 출고일자를 비교해야 문제를 풀 수 있는듯하다.
여기서 DATE_FORMAT을 이용하면 짧고 쉽게 DATE를 비교할 수 있다.
DATE_FORMAT은 DATE를 넣고 원하는 FORMAT을 넣어주면 된다.
DATE_FORMAT('2022-05-01','%Y-%m-%d')
'2022-05-01'를 단순 문자열로 풀게 된다면 연도, 월, 일을 나눠서 풀어야 할 것이다.
하지만 DATE_FORMAT을 사용하므로 DATE 타입끼리 비교가 가능해진다.
이것을 활용해서 위의 문제를 풀어보자.
SELECT ORDER_ID, PRODUCT_ID, DATE_FORMAT(OUT_DATE, '%Y-%m-%d') AS OUT_DATE,
CASE
WHEN OUT_DATE<=DATE_FORMAT('2022-05-01','%Y-%m-%d')
THEN '출고완료'
WHEN OUT_DATE IS NULL
THEN '출고미정'
ELSE '출고대기' END AS 출고여부
FROM FOOD_ORDER ;
CASE문을 사용해서 2020년 5월 1일과 비교해서 2020년 5월 1일보다 먼저 들어왔으면 '출고완료', NULL값이면 '출고미정', 그 외의 값은 '출고대기'라고 값을 정해주면 되겠다.
✅ DATE타입의 값을 핸들링할때 유용하게 쓰이는 구문이니 기억해두면 좋다.
'SQL' 카테고리의 다른 글
[SQL] 작품이 없는 작가 찾기 (0) | 2022.11.30 |
---|---|
[SQL] 일별 블로그 방문자 수 집계 (0) | 2022.11.29 |
[SQL] 버뮤다 삼각지대에 들어가버린 택배 (0) | 2022.11.28 |
[SQL] 쇼핑몰의 일일 매출액과 ARPPU (0) | 2022.11.24 |
[SQL] 멘토링 짝꿍 리스트 (0) | 2022.11.23 |