如何删除 generate_series 序列中的最后一项

How remove the last item on generate_series sequence

我尝试为 2016 年的每一天创建 10 分钟的范围。

SELECT i::timestamp date_start, 
       i::timestamp + '599 second'::interval date_end,
       0::bit download
FROM generate_series('2016-01-01', 
                     '2017-01-01', 
                     '10 minute'::interval) i;

2016年有366天所以366 days * 24 hours * 6 interval = 52704

最后一行属于 2017 年

我可以只删除最后一行,但我想修复查询以防 2017 年再次 运行 它。

从间隔结束时减去 10 分钟怎么样?

SELECT i::timestamp date_start, 
       i::timestamp + '599 second'::interval date_end,
       0::bit download
FROM generate_series('2016-01-01', 
                     '2017-01-01'::timestamp - interval '10 minute', 
                     '10 minute'::interval
                    ) i