데이터분석 과정/SQL

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

ANNASENA 2024. 1. 8. 18:05
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