본문 바로가기
분석/데이터분석

PostgreSQL : generate series of date (일련의 날짜 만들기)

by 여우요원 2019. 9. 6.

PostgreSQL

PostgreSQL에서는 generate_series 라는 함수를 이용하면 일련의 숫자를 만들 수 있다.

select generate_series(0, 364) as idx

위의 커리문장은 0부터 364까지의 숫자 레코드셋을 만들어준다.

 

여기서 응용을 하면 날짜의 덧셈과 cross join 기능을 이용하면 날짜 series를 만들 수 있다. 

select a.date + b.idx as date 
from ( select '2019-01-01'::date as date ) a
cross join ( select generate_series(0, 364) as idx ) b  

2019-01-01
2019-01-02
2019-01-03
2019-01-04
2019-01-05
2019-01-06
2019-01-07
2019-01-08

...

..

.

2019-12-26
2019-12-27
2019-12-28
2019-12-29
2019-12-30
2019-12-31

 

그리고 이렇게 한방에 만들 수 도 있다.

select generate_series( '2019-01-01'::date , '2019-12-31'::date, '1 day'::interval)::date