系列生成函数和间隔?

时间:2018-07-21 17:13:51

标签: sql postgresql

在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

由于完全输出间隔,我最近遇到了如何解决此问题的问题?

1 个答案:

答案 0 :(得分:1)

不,您解释错了。

generate_series()从第一个值开始,并继续添加间隔,直到该值超过最终值。

这正是它的定义方式以及您的示例正在执行的操作。边界是起点和终点。

一个更简单的示例使用数字。此查询:

SELECT *
FROM generate_series(0, 22, 5);

返回一系列5的倍数,最高为22。即,最后一个值为20。