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