问题描述
我们可以使用以下方法生成具有指定bin宽度的datetime数组:
select generate_series(
timestamp without time zone '2020-10-01 00:00:00','2020-10-04 00:00:00','24 hours') as ts
ts
1 2020-10-01
2 2020-10-02
3 2020-10-03
4 2020-10-04
是否可以生成一个设定长度的数组,即给定数目的箱/间隔?
我想提供一个日期范围和相等间隔的数量将其划分。
解决方法
来自评论:
我想提供一个日期范围和相等间隔的数量以将其划分为
您可以将generate_series()
与整数和日期算术一起使用:
with params as (
select
timestamp '2020-10-01' ts_start,timestamp '2020-10-04' ts_end,3 num
)
select ts_start + (ts_end - ts_start) * i / num as ts
from params
cross join lateral generate_series(0,num) s(i)
这会将给定的时间范围分为3个间隔(共计4个时间戳)。
| ts | | :------------------ | | 2020-10-01 00:00:00 | | 2020-10-02 00:00:00 | | 2020-10-03 00:00:00 | | 2020-10-04 00:00:00 |