generate_series (GP): A series of filling data can be generated according to different rules
Int type
(1) generate_series(start, stop, —) generates a sequence of values, from start to stop, the step is—
Example:
Default is 1 when no step is written
select generate_series(1, 10);
generate_series
-----------------
1
2
3
4
5
6
7
8
9
10
(10 rows)
( 2 ) generator ate_series(start, stop, step) generates a numerical sequence, from start to stop, the step is step
set step function
select generate_series(1, 10, 3);
generate_series
-----------------
1
4
7
10
(4 rows)
If step is positive and start is greater than stop, then zero rows are returned. Conversely, if step is negative and start is less than stop, zero rows are returned. For NULL input, zero rows are also produced. A step of zero is an error
start is greater than stop
select generate_series(5,1);
generate_series
-----------------
(0 rows)
stop is empty NULL
select generate_series(5,null);
generate_series
-----------------
(0 rows)
start is greater than stop, step is zero
select generate_series(5,1,0);
ERROR: step size cannot equal zero
start is greater than stop, step is negative
select generate_series(5,1,-1);
generate_series
-----------------
5
4
3
2
1
(5 rows)
Time type (24-hour cut)
select
generate_series(date_trunc('day', now()-interval '7 hour') + interval '7 hour',
date_trunc('day', now()-interval '7 hour') + interval '31 hour','1 hour') as fab_date
-------------------------------
2021-11-29 07:00:00
2021-11-29 08:00:00
2021-11-29 09:00:00
2021-11-29 10:00:00
2021-11-29 11:00:00
2021-11-29 12:00:00
2021-11-29 13:00:00
2021-11-29 14:00:00
2021-11-29 15:00:00
2021-11-29 16:00:00
2021-11-29 17:00:00
2021-11-29 18:00:00
2021-11-29 19:00:00
2021-11-29 20:00:00
2021-11-29 21:00:00
2021-11-29 22:00:00
2021-11-29 23:00:00
2021-11-30 00:00:00
2021-11-30 01:00:00
2021-11-30 02:00:00
2021-11-30 03:00:00
2021-11-30 04:00:00
2021-11-30 05:00:00
2021-11-30 06:00:00
(24 rows)
Summarize:
The generate_series function of PostgreSQL has many application scenarios for generating test data and updating certain regular data in batches. Proper use can improve development efficiency.