【问题标题】:PostgreSQL group by 24 hour period noon to noonPostgreSQL 按中午到中午 24 小时分组
【发布时间】:2014-04-15 03:19:56
【问题描述】:

使用 PostgreSQL,我需要能够在 24 小时内汇总数据,但从中午到中午。数据在几周内每 5 分钟收集一次,我想对从第一天中午 12:00 到第二天中午 12:00 直到数据结束的 24 小时内的读数进行平均。

对于更标准的午夜到午夜分组,我可以使用下面的示例,它工作得很好,但我看不出如何适应我需要的中午到中午时间跨度。

group by date_trunc('day', <DateCol>)

PostgreSQL 对我来说相对较新,如果我要在 SQL Server 中执行此操作,我会使用:

dateadd(hour, (datepart(hour, <DateCol>)/12)*12, dateadd(day, 0, datediff(day, 0, <DateCol>)))

据我阅读http://www.postgresql.org 的文档可以看出,没有与date add 等效的东西。有没有办法在 PostgreSQL 中执行所需的操作?

【问题讨论】:

  • 在标准 SQL 中,您可以通过添加“间隔”类型的值来添加日期,如 select current_date + interval '12' hour;。 PostgreSQL 或多或少遵循标准 SQL 进行日期运算。
  • 谢谢,这几乎是让我到达那里的原因,尽管它更进一步获得最终分组,使用:GROUP BY date_trunc('day', &lt;DateCol&gt; + interval '12h') + interval '12h' 获得。比我预期的要容易得多。

标签: sql postgresql grouping aggregation


【解决方案1】:

尝试按日期分组 - 12 小时:

group by date_trunc('day', <DateCol> - INTERVAL '12 hours') 

【讨论】:

    猜你喜欢
    • 2016-07-28
    • 2015-06-02
    • 2012-01-10
    • 2012-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-08
    • 1970-01-01
    相关资源
    最近更新 更多