我正在构建一个处理时间和持续时间的应用程序,以及数据库中给定时间单位和开始/结束时间之间的交集,例如:
数据库:
Row # | start - end
Row 1 | 1:00 - 4:00
Row 2 | 3:00 - 6:00
我希望能够选择两个特定时间之间的时间总和,或者 GROUP BY 一个 INTERVAL 以便返回的记录集在给定的时间间隔内每个总和都有一行,例如:
SELECT length( (start, end) ) WHERE (start, end) INTERSECTS (2:00,4:00)
(在这种情况下, (start,end) 是一个 PERIOD,它是 Postgres Temporal 和 pg9.2 中的一种新数据类型)
这将返回
INTERVAL 3 HOURS
因为第 1 行在 2:00 - 4:00 之间有两个小时,而第 2 行在此期间有一个小时。
此外,我希望能够:
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
它显示给定间隔期间每小时的一行以及该间隔开始时的时间总和
我认为PERIOD 类型可以用于此,它在 Postgres Temporal 和 Postgres 9.2 中。但是,据我所知,这些目前在 Heroku 上不可用 - 所以,
如何在 Heroku 上启用这些数学?