在PostgreSQL 9.5手册的9.24. "Set Returning Functions"段中,有一个我不同意“ generate_series”的示例。
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)
我解释了为什么,如果我们谈论长度为10个小时的间隔,那么由于只剩下4个小时,因此不应显示“ 2008-03-04 08:00:00”这一行。
最后一行应为2008-03-03 22:00:00
。
由于完全输出间隔,我最近遇到了如何解决此问题的问题?
答案 0 :(得分:1)
不,您解释错了。
generate_series()
从第一个值开始,并继续添加间隔,直到该值超过最终值。
这正是它的定义方式以及您的示例正在执行的操作。边界是起点和终点。
一个更简单的示例使用数字。此查询:
SELECT *
FROM generate_series(0, 22, 5);
返回一系列5的倍数,最高为22。即,最后一个值为20。