2015-09-14 41 views
0

我想弄清楚是否可以按日期从日期的特定时间到下一日期的时间对数据进行分组。 我一个bills表PostgreSQL数据库具有以下栏目:按特定时间在Rails中按日期分组

id serial NOT NULL, 
bill_amount double precision, 
tax_amount double precision, 
discount double precision, 
grand_total double precision, 
created_at timestamp without time zone NOT NULL, 
updated_at timestamp without time zone NOT NULL 

我想组由日期2015-09-12 06:00:00.00000至今2015-09-13 06:00:00.00000像条款,是指除2015-09-13 06:00:00.00000少的所有记录,比2015-09-12 06:00:00.00000更大的将被视为数据9月12日。所以如果我想按月分组得到一个月的数据,有可能吗?

+0

不,如果您正在寻找内置导轨方法来解决它。您可以始终围绕这个想法提供逻辑 – Bijendra

回答

0

在PostgreSQL,你可以使用它作为您的分组表达式:

date_trunc('day',created_at-interval '6h') 

(假设created_at是你是想要分组的字段)。

我不是Rails的专家,但通过我形成的意见的文件一眼,你也许能得到它发出这样的SQL的东西,如

Bills.select("date_trunc('day',created_at-interval '6h') as day") 
    .group("date_trunc('day',created_at-interval '6h')") 

顺便说一句,我猜你想的原因从06:00到06:00运行的日期是日期列的时区未对齐 - 您最好确保存储在这些列中的数据对齐,以便日期从00:00 - 00 :00,或者如果表格将存储来自多个时区的数据,则使用timestamp with timezone作为这些列的类型。