-
[PostgreSQL] 시간, 숫자, 날짜 생성하기 (generate_series)DB/PostgreSQL 2022. 2. 20. 16:40
파이썬과 같은 프로그래밍 언어에서 1~10까지의 수를 생성하거나 2022-01-01 ~ 2022-01-10 까지의 날짜를 생성하는 것은 반복문을 통해 쉽게 만들 수 있습니다.
postgresql에서도 generate_series 함수를 사용하면 이러한 문제를 쉽게 해결할 수 있습니다.
generate_series(start, stop, [step 또는 interval))
3번째 인자는 입력된 타입이 int인지 timestamp인지에 따라서 step 이거나 inteval을 줄 수 있습니다.
SELECT * FROM generate_series(2,4); generate_series ----------------- 2 3 4 (3 rows) SELECT * FROM generate_series(5,1,-2); generate_series ----------------- 5 3 1 (3 rows) SELECT * FROM generate_series(4,3); generate_series ----------------- (0 rows) -- this example relies on the date-plus-integer operator SELECT current_date + s.a AS dates FROM generate_series(0,14,7) AS s(a); dates ------------ 2004-02-05 2004-02-12 2004-02-19 (3 rows) SELECT * FROM generate_series('2008-03-01 00:00'::timestamp, '2008-03-04 12:00', '10 hours'); generate_series --------------------- 2008-03-01 00:00:00 2008-03-01 10:00:00 2008-03-01 20:00:00 2008-03-02 06:00:00 2008-03-02 16:00:00 2008-03-03 02:00:00 2008-03-03 12:00:00 2008-03-03 22:00:00 2008-03-04 08:00:00 (9 rows) SELECT generate_series('2020-01-01'::date, '2020-12-31'::date, '1 months'); generate_series ------------------------- 2020-01-01 00:00:00.000000 2020-02-01 00:00:00.000000 2020-03-01 00:00:00.000000 2020-04-01 00:00:00.000000 2020-05-01 00:00:00.000000 2020-06-01 00:00:00.000000 2020-07-01 00:00:00.000000 2020-08-01 00:00:00.000000 2020-09-01 00:00:00.000000 2020-10-01 00:00:00.000000 2020-11-01 00:00:00.000000 2020-12-01 00:00:00.000000
레퍼런스