3

ここに、日付に関するさらに別のSQLの質問があります…</ p>

PHPとPostgresを使用して、数日、数週間、場合によっては数か月にわたるイベントを表示する予定表アプリケーションを構築しています。各イベントには開始日と終了日があり、範囲でそれらを選択することは問題ではありません。ただし、Postgresが毎週の最初の日に複数週のイベントを分割できれば便利です。GROUP BYとを使用して実行できると言われましたが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 に答える