3

这是另一个关于日期的 SQL 问题……</p>

我正在使用 PHP 和 Postgres 构建一个日历应用程序,该应用程序将显示跨越数天、数周或可能数月的事件。每个事件都有开始日期和结束日期,按范围选择不成问题;但是,如果 Postgres 可以在每周的第一天拆分多周的事件,那对我来说会很有用。我被告知可以使用GROUP BYand来完成EXTRACT,但我对 SQL 的理解还不够好,无法理解如何操作。

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

4

2 回答 2

3

您可以使用 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');
于 2009-09-04T09:12:43.210 回答
1

首先 - 最好显示一些您希望我们帮助您的查询的示例输入和输出 - 例如,我并没有真正得到您需要的东西。

此外 - 您可能会发现 OVERLAPS 不是最理想的,因为它不可索引。相反,您可能想要使用我在这篇博文中描述的方法。

于 2009-09-04T09:22:56.013 回答