在Postgres中以周为单位拆分时间间隔[英] Splitting up an interval in weeks in Postgres

本文是小编为大家收集整理的关于在Postgres中以周为单位拆分时间间隔的处理方法,想解了在Postgres中以周为单位拆分时间间隔的问题怎么解决?在Postgres中以周为单位拆分时间间隔问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

这里是关于日期的另一个SQL问题…

我正在使用PHP和Postgres构建一个日历应用程序,该应用程序将显示跨越天数,几周或几个月的事件.每个事件都有一个开始日期和结束日期,按范围选择它们不是问题.但是,如果Postgres可以在每周的第一天分开多周的活动,对我来说将是有用的.有人告诉我可以使用GROUP BY和EXTRACT进行完成,但是我对SQL不够好,无法了解如何.

问题是:可以做到这一点,确切的查询会是什么样?目前我正在使用SELECT * FROM events WHERE (range) OVERLAPS (range);然后在PHP中进行分裂,但显然不是最佳的.

推荐答案

您可以使用postgres函数 generate_serate_series .在8.3和更早的时候,做

之类的事情
select current_date + s.a as dates from generate_series(0,14,7) as s(a);

在8.4中,您也可以做

SELECT * FROM generate_series('2008-03-01 00:00'::timestamp,
                              '2008-03-04 12:00', '10 hours');

其他推荐答案

首先 - 最好显示一些您希望我们帮助您的查询的示例输入和输出 - 例如,我真的不知道您需要的是什么.

另外 - 您可能会发现重叠是次优的,因为它是不可索引的.相反,您可能需要使用我在此博客文章.

本文地址:https://www.itbaoku.cn/post/1763993.html