と呼ばれるテーブルがあるとしますevents
:
CREATE TABLE events (
id integer,
dtstart timestamptz);
INSERT INTO events VALUES
(4,'2010-06-29 04:00:00'),
(5,'2010-06-29 13:00:00'),
(6,'2011-07-01 20:00:00'),
(7,'2012-07-03 14:30:00');
2 つの入力パラメータがdtfrom
あり、 を使用してテーブル イベントdays
から選択する必要があります。events
dtstart >= dtfrom
groupby(date(dtstart)) <= days
たとえば、上記の表を使用して、次のイベントを取得する必要がdtfrom='2010-06-29'
あります。days=2
(4,'2010-06-29 04:00:00'),
(5,'2010-06-29 13:00:00'),
(6,'2011-07-01 20:00:00'),
今のところこれにたどり着きました:
SELECT DATE(dtstart) AS _dtstart
FROM events
WHERE dtstart > '2010-06-29 00:00:00'
GROUP BY _dtstart
ORDER BY _dtstart
LIMIT 2;
しかし、グループ化は避けたいと思います。
次のdays
日に存在するイベントを取得する必要があります。日にはイベントのない日を含めないでください。
つまり、'2010-06-29 00:00:00' より後に開始するイベントをフェッチしますが、それらが開始する異なる日付の数は 2 (または 10、または...) を超えてはなりません。