PostgreSQL generate_series() 函数使用指南
PostgreSQL generate_series() 函数根据指定的开始值、结束值和步长返回一个基于系列的集合。
比如,您可以使用 generate_series() 函数产生一个包含 1 ... 5 的集合。
generate_series() 语法
这里是 PostgreSQL generate_series() 函数的语法:
generate_series(start, stop[, step]) -> setof
参数
start- 必需的。 起始值。 它可以是
integer,bigint,numeric,timestamp,timestamp with time zone类型的值。 stop- 必需的。 结束值。 它可以是
integer,bigint,numeric,timestamp,timestamp with time zone类型的值。它的数据类型应该和start参数相同。 step- 可选的。 步长。 如果
start和stop是数字类型, 它应该和他们数据类型相同,并且是可选的,它的默认值是1。 如果start和stop是时间戳类型,它应该是interval类型的数据,并且是必须的。
返回值
PostgreSQL generate_series() 函数返回一个包含了多行的集合。
generate_series() 实例
这里整理了一些 generate_series() 函数的示例。
要产生一个包含了 1 到 5 中间所有整数的集合,请使用以下语句:
SELECT generate_series(1, 5);
generate_series
-----------------
1
2
3
4
5您可以为 generate_series 指定一个别名,如下:
SELECT generate_series(1, 5) AS i;
i
---
1
2
3
4
5要产生一个包含了 5 到 1 中间所有整数的集合,请使用以下语句:
SELECT generate_series(5, 1, -1);
generate_series
-----------------
5
4
3
2
1要产生一个包含了 1 到 5 中间间隔为 1.1 的所有数字的集合,请使用以下语句:
SELECT generate_series(1, 5, 1.1);
generate_series
-----------------
1
2.1
3.2
4.3要产生一个包含了 2022-06-06 与 2022-06-10 之间间隔为 12 小时的所有时间的集合,请使用以下语句:
SELECT generate_series(
'2022-06-06'::timestamp,
'2022-06-10',
'12 hours');
generate_series
---------------------
2022-06-06 00:00:00
2022-06-06 12:00:00
2022-06-07 00:00:00
2022-06-07 12:00:00
2022-06-08 00:00:00
2022-06-08 12:00:00
2022-06-09 00:00:00
2022-06-09 12:00:00
2022-06-10 00:00:00