【发布时间】: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', <DateCol> + interval '12h') + interval '12h'获得。比我预期的要容易得多。
标签: sql postgresql grouping aggregation