IT_SQL

[분석실습] SQL 데이터 날짜함수 가공하기(now, date_part, current, interval ~)

soyounism 2021. 11. 12. 20:24

안녕하세요.

이번 포스팅에서는, 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 등으로 검색하시면 빠르게 검색 할 수 있습니다