(내가)자주 쓰는 날짜 계산식
주문 데이터를 가공하면서 가장 중요한 것 중 하나는 날짜이다.
어느 날에 주문이 일어났고, 주문과 주문 사이의 갭을 구한다거나, 특정 월의 주문만 구한다거나..
날짜로 자르는 방법은 굉장히 다양하기 때문에 날짜 함수 또한 아주 다양하던데
나는 주로 3가지를 많이 썼던 것 같다.
1. Date_diff
날짜와 날짜 사이의 차이를 세주는 함수
date_diff('day', '2021-01-01', '2021-01-03) 라고 보았을 때, 2021-01-01 ~ 2021-01-03 사이의 갭을 세줘, 라는 뜻이다.
쓰는 순서는 date_diff('day', 작은날짜, 큰날짜)이다. 요거 자꾸 헷갈리니까 까먹지 말기.
date_diff('day',date(before),date(min_date))
2. DATE_ADD
최근 날짜부터 N일 이전 데이터 조회할 때 많이 사용하고 있는 방식
해석하면 date(part_date)가 최근 날짜로부터 60일 이전인 날보다 큰 날짜이면 보여줘 라는 뜻이다.
오늘이 1월 1일이라고 치면 60일 이전이면 대충 11월 1일, 11월 1일보다 part_date가 크거나 같아야 한다는 이야기다.
최근 데이터만 가져오고 싶은데 날짜 부분을 매번 수정하지 않으려고 사용하고 있다.
CURRENT_DATE는 최근일자, 라는 뜻이고, 앞에 date(part_date)는 데이터 형식 맞춰주려고 써놓은 것이니 참고.
date(part_date) >= DATE_ADD('day', -60, CURRENT_DATE)
3. Substring
문자열의 일부분을 잘라주는 함수이다. 글자 세는건 0부터가 아니라 1부터 센다.
아래 뜻은 birth라는 데이터를 varchar(8)로 바꿔주고(cast) 그걸 substr 해서 4글자까지만 보여달라는 뜻이다.
birth가 2021-01-01로 저장되어 있었다면, 이 함수를 통해 2021만 꺼내올 수 있다.
substr(cast(birth as varchar(8)),1,4)
다른 날짜 함수를 더 사용하게 된다면 여기에 추가해놓아야지.
'SQL' 카테고리의 다른 글
[SQL] 고객 잔존율을 구해보자 (0) | 2022.01.04 |
---|---|
[SQL] Create table / Drop table 알아보자 (0) | 2022.01.03 |
[SQL] RANK () OVER / ROW_NUMBER () OVER / DENSE()OVER 를 알아보자 (0) | 2022.01.03 |
[SQL] Case when ~ then ~ end 조건 표현식 쉽게 써보자 (0) | 2022.01.03 |
[SQL] Group by 쉽게 알아보자 (0) | 2022.01.03 |
댓글