2015-09-14 74 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作爲這些列的類型。