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
'데이터분석 과정 > SQL' 카테고리의 다른 글
SQL | 데이터 정리(없는 데이터, 사용할 수 없는 데이터) (1) | 2024.01.08 |
---|---|
SQL | Pivot Table 만들기 | 실습 문제 (1) | 2024.01.08 |
SQL | JOIN(조인)할 때 ON절의 컬럼명, 꼭 같아야 할까 (0) | 2024.01.08 |
SQL | 서브쿼리(Subquery) 사용법 정리 | 서브쿼리 예제 (2) | 2024.01.08 |
SQL | IF문, CASE문으로 범주 별 다른 조건 적용하기 (1) | 2024.01.08 |
댓글