반응형
날짜와 시간 데이터 타입
DATE | 2021-08-05 |
TIME | 11:33:28 |
DATETIME | 2021-08-05 11:33:28 |
TIMESTAMP | 2021-08-05 11:33:28 UTC |
*UTC : 시간대(타임존)
문자를 날짜로 바꿔보자
- 데이터 전처리 단계에서 수행하게 됨
'YYYY-MM-DD' 형식이라면
DATE(컬럼명)
그 외의 형식이라면
PARSE_DATE(날짜형태, 컬럼명)
기본 형식이 아닌 경우 컴퓨터가 어떤 것이 연도,월,일인지 구분하지 못함
SELECT
DATE('2021-08-05')
, PARSE_DATE('%Y%m%d', '20210805')
, PARSE_DATE('%Y/%m/%d', '2021/08/05')
, PARSE_DATE('%Y.%m.%d', '21.08.05')
, PARSE_DATE('%Y-%m/%d', '21-AUG/05')
, PARSE_DATE('%Y%B%d', '2021AUGUST05')
SELECT last_review, PARSE_DATE('%Y.%m.%d', last_review) AS parse_last_review
FROM data.airbnb_nyc
날짜 포맷 규칙
연도 | 2021 | %Y |
21 | %y | |
월 | 08 | %m |
AUGUST | %B | |
AUG | %b | |
일 | 05 | %d |
날짜에서 원하는 정보만 뽑아보자
EXTRACT (원하는정보 FROM 컬럼명)
원하는정보
- YEAR
- MONTH
- DAY
- DAYOFWEEK
- 일요일부터 토요일까지 1~7
- WEEK
- 0~53
- 주의 시작은 일요일
- 첫째 주에 일요일이 없으면 0주차
- 업무 시 주차 별 비교나 주차 별 매출을 구할 경우 다수
- WEEK(MONDAY)
- 주의 시작 요일을 바꾸고 싶을 때
- WEEK(요일) : 괄호 안의 요일에 따라 일주일의 시작 요일이 달라짐
- QUARTER
SELECT rental_date,
EXTRACT(YEAR FROM rental_date) AS rental_year
FROM data.bike_sharing
SELECT DISTINCT rental_date,
EXTRACT(YEAR FROM rental_date) AS rental_year
FROM data.bike_sharing
SELECT rental_date,
EXTRACT(YEAR FROM rental_date) AS rental_year,
EXTRACT(MONTH FROM rental_date) AS rental_month,
EXTRACT(DAYOFWEEK FROM rental_date) AS rental_dow,
EXTRACT(WEEK FROM rental_date) AS rental_week,
EXTRACT(WEEK(MONDAY) FROM rental_date) AS rantal_week_monday
FROM data.bike_sharing
- 일자, 분기도 가능
날짜에 일정 기간을 더하고 빼자
- 기간을 더할 때
DATE_ADD (컬럼명, INTERVAL 기간)
- 기간을 뺄 때
DATE_SUB (컬럼명, INTERVAL 기간)
- 기간
- 1 YEAR
- 6 MONTH
- 7 DAY
- 2 WEEK
- 3 QUARTER...
SELECT rental_date,
DATE_ADD(rental_date, INTERVAL 5 DAY) AS rental_date_5day,
DATE_SUB(rental_date, INTERVAL 1 week) AS rental_date_1week_ago
FROM data.bike_sharing
두 날짜 사이의 차이를 구해보자
DATE_DIFF (컬럼명1, 컬럼명2, 단위)
- 컬럼명 1 > 컬럼명 2 : 컬럼명 1이 컬럼명 2보다 최근 일자여야 한다
- 단위
- YEAR
- MONTH
- DAY
- WEEK
- WEEK(MONDAY)
- QUARTER
SELECT rental_date,
DATE_DIFF(DATE('2021-08-05'), rental_date, YEAR) AS diff_year,
DATE_DIFF(DATE('2021-08-05'), rental_date, WEEK) AS diff_week
FROM data.bike_sharing
- DATETIME_DIFF도 같은 방식으로 작동한다
반응형
'Skills > SQL' 카테고리의 다른 글
[SQL] 15. 다듬어진 데이터가 필요로 할 때, 서브쿼리 (0) | 2021.08.05 |
---|---|
[SQL] 14. IF와 같은 역할, CASE WHEN (0) | 2021.08.05 |
[SQL] 12. 테이블 세로로 연결하기 (UNION) (0) | 2021.08.05 |
[SQL] 11. 테이블 연결하기 (ON과 WHERE 차이) (0) | 2021.08.05 |
[SQL] 10. 데이터 합치기 (JOIN) (0) | 2021.08.05 |