と呼ばれるテーブルがあるとします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から選択する必要があります。eventsdtstart >= dtfromgroupby(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、または...) を超えてはなりません。