Sql 级数生成函数与区间?
在PostgreSQL 9.5手册的段落中,有一个“generate_series”的例子,我不同意这个说法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
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()
是关于起始值,而不是关于完整间隔。