[분석실습] SQL 데이터 날짜함수 가공하기(now, date_part, current, interval ~)
안녕하세요.
이번 포스팅에서는, SQL의 날짜 함수 가공 구문들을 준비했습니다.
실무 데이터 분석을 하신다면 꼼꼼히 봐주세요
날짜 함수
* 날짜함수는 오라클, MYSQL 등등 모두 다른편이라 구글링 해서 사용해야 합니다.
구글링 팁은 맨 아래에 있으니, 참고해주세요
1. 날짜함수 -POSTGRESQL 기준
now()
current_timestamp
current_date
select now()
select current_timestamp
두개 모두 같은 결과가 나옵니다
current_date를 사용하면, 시간없이 연,월,일 이 나오게됩니다
sql마다 다르니 날짜함수는 외우지 않아도 됩니다
2. 날짜 형식에서 문자 형식으로 변환 (to_char)
지금 시간에서 날짜 형식을 변환해보겠습니다
select to_char(now(), 'yyyymmdd')
문자열로, 연월일(시간없이)로 변환되었습니다
이렇게 다양하게 날짜 형식이 변환가능합니다
3. 날짜 더하기 빼기(sql마다 다름!) (interval)
날짜 변경이 필요할 때가 있겠죠. 날짜 더하기 빼기를 알아보겠습니다
지금 날짜 기준(11월)으로 한달을 더해보겠습니다. 12월로 나타나겠죠?
select now() + interval '1month'
month, day, year 모두 가능합니다
4. 날짜에서 연, 월, 주 확인하기 (day_part)
현재 날짜에서 연, 월, 주 확인가능합니다. 아래 코드에서 'month'대신 day를 넣으면 일이 확인 가능합니다
select date_part('month', now())
5. 최근 1달 동안의 매출액 확인하기
먼저 연도를 확인해보겠습니다
2000년 밖에 없네요.. 월로 잡아서 분석을 해보겠습니다
*먼저 sales_date칼럼에서 month를 추출하려면?
-지난 시간에 배웠던 자르기 함수. left, right, substring 함수를 사용합니다
*1달전 month를 구하려면?
-date_part 함수를 사용해서 현재 month를 구하고, interval을 활용해 -1month를 해줍니다
아래 where절에 주목해 주세요
기존데이터의 sales_date는 문자형입니다
현재 시간을 구한 date_part는 숫자형입니다 -> cast함수를 사용해서 as varchar 문자형으로 바꿔줍니다.
where 조건은 sales_date의 month = 현재날짜 month 기준 -1 => 10월 매출을 확인합니다(현재 11월)
select sales_date, tot_amt
from transactions_csv tc
where substring(sales_date, 6,2) --문자
= cast(date_part('month', now() -interval '1month') as varchar)
--숫자->문자로 바꿔서 대소비교
--->현재 11월 기준
order by tot_amt desc
6. 하반기 매출액 확인하기
5번과 같은 방식으로 하반기 매출액을 확인해보겠습니다
+ sales_date는 문자형이기 때문에 숫자형 integer로 변환한 후에 >=7 하반기 month로 계산했습니다
* 날짜+시간 합치기
* 구글링 팁!!
-'오늘날짜' 함수가 오라클에서는 뭘까?
검색 : now() in oracle
이외에도 interval 1 month in oracle 등으로 검색하시면 빠르게 검색 할 수 있습니다