분석/데이터분석
PostgreSQL : generate series of date (일련의 날짜 만들기)
여우요원
2019. 9. 6. 15:51

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