给定长度的Postgres generate_series

问题描述

我们可以使用以下方法生成具有指定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个时间戳)。

Demo on DB Fiddle

| 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 |

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...