代码之家  ›  专栏  ›  技术社区  ›  slikts

在研究生中以周为单位划分时间间隔

  •  3
  • slikts  · 技术社区  · 17 年前

    我正在使用PHP和Postgres构建一个日历应用程序,它将显示跨越几天、几周甚至几个月的事件。每个事件都有一个开始日期和结束日期,按范围选择它们不是问题;然而,如果博士后能在每周的第一天将多周的活动分开,这对我来说是很有用的。有人告诉我可以用 GROUP BY 和 EXTRACT ,但我对SQL不够精通,无法理解如何使用SQL。

    问题是:这能做到吗?精确的查询会是什么样子?目前我正在使用 SELECT * FROM events WHERE (range) OVERLAPS (range) ; 然后在PHP中进行拆分,但这显然不是最优的。

    2 回复  |  直到 17 年前
        1
  •  3
  •   Martin v. Löwis    17 年前

    您可以使用Postgres函数 generate_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');
    
        2
  •  1
  •   user80168 user80168    17 年前

    首先,最好能展示一些您希望我们帮助您的查询的输入和输出示例——例如,我并没有真正得到您需要的内容。

    此外,您可能会发现重叠是次优的,因为它不可索引。相反,您可能希望使用我在中描述的方法 this blog post

    推荐文章