SQL | 날짜 데이터 포맷, 조건

    728x90

     

     

    1. 날짜 데이터

    : 문자/숫자 타입과 같이 날짜 데이터도 특정한 타입을 가지고 있음

    : 년, 월, 일, 시, 분, 초 등의 값을 모두 가지고 있고, 목적에 따라 '월', '주', '일' 등으로 포맷 변경이 가능

     


    2. 날짜 데이터의 여러 포맷

     

    ▶ DATE 함수로 데이터 타입을 날짜로 바꾸기

     

    ① yyyy-mm-dd 형식의 컬럼을 날짜 타입으로 바꾸기

    SELECT DATE(date) date_type,
           date
    FROM payments

    >> 여기서 왼쪽의 시계 모양은 해당 컬럼의 데이터 타입이 날짜라는 의미, abc데이터 타입이 문자라는 의미

    >> 즉, 오른쪽의 date 컬럼의 값들은 보이기엔 다 날짜처럼 생겼지만 사실 문자형 데이터였고,

    date_type 컬럼의 값들은  DATE 함수진짜 날짜 데이터로 잘 바뀜.

     


    ▶ DATE_FORMAT 함수로 날짜 조회하기

    DATE_FORMAT(data, format)

     

    ② 위의 date_type 을 date_format() 함수를 이용해 년, 월, 일, 주로 조회해보기

     

    - 년: Y(4자리), y(2자리)

    - 월: M(영문 월), m(숫자 월)

    - 일: d, e

    - 요일: w

     

    SELECT DATE(date) date_type,
           DATE_FORMAT(date(date), '%Y') "년",
           DATE_FORMAT(date(date), '%m') "월",
           DATE_FORMAT(date(date), '%d') "일",
           DATE_FORMAT(date(date), '%w') "요일"
    FROM payments

     


    3. 실습문제

     

    문제) 년도 별 3월의 주문 건수 구하기

    SELECT year,
           month,
           count(1) cnt_order3
    FROM 
    (SELECT DATE_FORMAT(date, '%Y') year,
            DATE_FORMAT(date, '%m') month
    FROM payments p) a
    WHERE month = 3
    GROUP BY 1, 2
    ORDER BY 1
    SELECT DATE_FORMAT(DATE(date), '%Y') year,
           DATE_FORMAT(DATE(date), '%m') month,
           COUNT(1) cnt_order
    FROM food_orders fo 
    INNER JOIN payments p ON fo.order_id = p.order_id
    WHERE DATE_FORMAT(DATE(date), '%m')='03'
    Group By 1, 2
    Order By 1

    728x90

    댓글