カレンダーでこの問題に直面しています。
すべてのレコード (イベント) を (select 経由で) 抽出する必要があります: 1. 特定の日付、または 2. 繰り返し可能な日付
問題は、通常のカレンダーが月全体 (または特定の時間範囲) を表示するため、サブクエリから生成されたサブセットからレコードを選択 (および日付の断片を比較) できることです。
select (generate_series('2012-06-29 00:00:00',
'2012-07-03 00:00:00',
'5 minutes'::interval))::timestamp;
スクロールダウンできるイベントの無限リストのようなカレンダーのビューを作成する必要があります。そのため、イベントを 1 つずつ表示する必要があります。イベント (つまり、2012-06-29 00:00:00 から 2012-10-29 00:00:00) を選択すると、ステートメントは日付が 2012-10-30 00:00:00 のレコードを考慮しません。 、これは予期されていません。
連続していない複数の日付を選択するにはどうすればよいですか?
データベース スキーマ:
CREATE TABLE "public"."events" (
"id" int4 DEFAULT nextval('events_id_seq'::regclass) NOT NULL,
"date" timestamp(6),
"date_repeat_interval" interval(6),
"date_repeat_start" timestamp(6),
"date_repeat_stop" timestamp(6),
"event_name" varchar(255) NOT NULL
)
WITH (OIDS=FALSE);
特定の日付にいくつかの定期的なイベントを挿入します。
INSERT INTO "public"."events" VALUES ('1', '2013-04-18 14:04:39', null, null, null, 'Regular 1');
INSERT INTO "public"."events" VALUES ('2', '2013-04-19 14:04:50', null, null, null, 'Regular 2');
そして、間隔が 1 日と 2 日で、開始日と終了日を指定していくつかのイベントを挿入します。
INSERT INTO "public"."events" VALUES ('3', null, '1 day', '2013-04-16 14:05:26', '2013-04-19 14:05:31', 'Repeatable 1');
INSERT INTO "public"."events" VALUES ('4', null, '2 days', '2013-04-17 14:05:49', '2013-06-15 14:05:53', 'Repeatable 2');
質問:
範囲内のすべてのイベントについてデータベースにクエリを実行する方法: NOW から LIMIT 10 の無限大まで。繰り返し可能なイベントの複数回の発生を含め、発生順に発生します。