【问题标题】:How can I use the PERIOD feature of Temporal Postgres / Postgres 9.2 on Heroku?如何在 Heroku 上使用 Temporal Postgres / Postgres 9.2 的 PERIOD 功能?
【发布时间】:2012-09-08 19:31:44
【问题描述】:

我正在构建一个应用程序来处理时间和持续时间,以及数据库中给定时间单位和开始/结束时间之间的交集,例如:

数据库:

Row # | start - end
Row 1 | 1:00 - 4:00
Row 2 | 3:00 - 6:00

我希望能够选择两个特定时间之间的时间总和,或者按 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 上启用这些数学运算?

【问题讨论】:

  • 无法真正回复您,但是,afaik,时间扩展的支持和记录非常差,因为该工作已用于在 Pg 9.2 中创建 tsrange。这意味着它甚至没有在 9.1 中附带官方 Postgres 的贡献,所以我认为你现在几乎没有机会在 Heroku 中加载这个扩展。
  • 就像@greg 所说,时间扩展是 PostgreSQL 9.2 中合并范围类型的先驱。如果可能的话,我会等待 9.2。使用范围列时,您可能会发现排除约束很有用。

标签: postgresql datetime heroku timestamp postgresql-9.2


【解决方案1】:

尝试运行:

 heroku addons:add heroku-postgresql:dev --version=9.2

这应该为您提供支持范围类型的 9.2 版本。由于目前这是非常早期的,任何反馈都将非常感谢 dod-feedback@heroku.com

【讨论】:

    猜你喜欢
    • 2014-07-07
    • 1970-01-01
    • 2013-06-04
    • 1970-01-01
    • 2013-07-16
    • 1970-01-01
    • 1970-01-01
    • 2019-06-12
    • 2015-06-08
    相关资源
    最近更新 更多