在我的 Rails 应用程序的 PostgreSQL 数据库中,记录了过去 10 年的每小时价格:
10 (24 x 365) 其中:“12/31/2012 01:00:00”、“11.99”
以下查询按天对价格进行分组,对这些每日分组中的价格进行平均以创建每日平均价格,并返回每一天的“天”、“每日平均”对:
HourlyPrice.average(:price, :group => "DATE_TRUNC('day', date)")
问题是,我的源数据中的每小时价格实际上反映了前一小时的价格。因此,在我的数据源 .CSV 中,这一天从 01:00:00 开始,到 24:00:00 结束。
这与 PostgreSQL 喜欢在其 DateTime 列中保存记录的方式相冲突。导入 CSV 数据后,PostgreSQL 将包含时间 24:00:00 的记录转换为第二天的 00:00:00。
这会影响我上面的平均查询的准确性。要修复查询,我仍然想按天分组,但偏移 1 小时。因此,平均范围从 01:00:00 开始,到第二天的 00:00:00 结束。
是否可以调整上述查询以反映这一点?