Sql 级数生成函数与区间?

Sql 级数生成函数与区间?,sql,postgresql,Sql,Postgresql,在PostgreSQL 9.5手册的段落中,有一个“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 2

在PostgreSQL 9.5手册的段落中,有一个“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小时的时间间隔,那么就不应该显示“2008-03-04 08:00:00”这一行,因为只剩下4小时了

最后一行应该是
2008-03-03 22:00:00


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

不,您的解释是错误的

generate_series()
从第一个值开始,然后继续添加间隔,直到该值超过结束值

这正是它的定义方式,也正是您的示例所做的。边界是起点和终点

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

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

返回5到22的一系列倍数。也就是说,最后一个值是20。

意味着“generate_series()”无法显示完整间隔的数量?@VikaSmirnova。确切地它生成范围内的起始值。有趣的是,我从来没有想过你的困惑,但它实际上是有道理的
Generate_series()
是关于起始值,而不是关于完整间隔。