首页 > 解决方案 > 在返回函数中返回间隔的结束?

问题描述

在这种情况下,9.24。PostgreSQL 9.5 手册的“设置返回函数”,只返回初始日期和时间。是否可以返回每个间隔结束的日期和时间?

SELECT * FROM generate_series('2008-03-01 00:00'::timestamp,
                              '2008-03-04 12:00', '10 hours');
   generate_series   
---------------------
 2008-03-01 00:00:00
 2008-03-01 10:00:00
 2008-03-01 20:00:00
 2008-03-02 06:00:00
 2008-03-02 16:00:00
 2008-03-03 02:00:00
 2008-03-03 12:00:00
 2008-03-03 22:00:00
 2008-03-04 08:00:00
(9 rows)

标签: sqlpostgresql

解决方案


这是你想要的吗?

SELECT gs.dte, LEAD(gs.dte) OVER (ORDER BY gs.dte) as next_dte
FROM generate_series('2008-03-01 00:00'::timestamp,
                     '2008-03-04 12:00',
                     '10 hours'
                    ) gs(dte);

或者,如果您不想要NULL最后一个间隔,请明确进行计算:

SELECT gs.dte, (gs.dte + interval '10 hours') as end_date
FROM generate_series('2008-03-01 00:00'::timestamp,
                     '2008-03-04 12:00',
                     '10 hours'
                    ) gs(dte);

推荐阅读