時間と期間、およびデータベース内の特定の時間単位と開始/終了時間の交差を処理するアプリを構築しています。次に例を示します。
データベース:
Row # | start - end
Row 1 | 1:00 - 4:00
Row 2 | 3:00 - 6:00
2 つの特定の時間の間の時間の合計を選択できるようにしたい、または GROUP BY INTERVAL を使用して、返されたレコードセットが特定の間隔中に合計ごとに 1 つの行を持つようにしたいと考えています。
SELECT length( (start, end) ) WHERE (start, end) INTERSECTS (2:00,4:00)
(この場合 (start,end) は、Postgres Temporal および pg9.2 の新しいデータ型である PERIOD です)
戻るだろう
INTERVAL 3 HOURS
行 1 は 2:00 から 4:00 の間に 2 時間あり、行 2 はその間に 1 時間あるためです。
さらに、次のことができるようになりたいです。
SELECT "lower bound of start", length( (start, end) ) GROUP BY INTERVAL 1 HOUR
返品したいもの:
1:00 | 1
2:00 | 1
3:00 | 2
4:00 | 2
5:00 | 1
これは、指定された間隔中の 1 時間ごとに 1 つの行と、その間隔の開始時の時間の合計を示します
これには、Postgres Temporal と Postgres 9.2 にある PERIOD 型が使用できると思います。ただし、現時点では、これらは Heroku では利用できません。
Heroku でこの種の数学を有効にするにはどうすればよいですか?