2016-08-19 50 views
0

我在查詢前一天的一小時數據時遇到了困難。在Postgres上使用Rails 4。Rails按小時查詢數據

例如,

Table X: 

created_at, value 

timestamp1 3 
timestamp2 5 

我想:

time, value 
YYMMDD 00:00 15 
YYMMDD 01:00 20 

基本上是每小時總和。我試過

Rails & Postgresql: how to group queries by hour?

Is it possible to group by hour/minute/quarter hour directly in ActiveRecord/Rails?

,但我仍然無法弄清楚如何讓它正常工作,我得到了錯誤的時間答覆。我如何設置我的時區以及這個查詢?

TableX.group( 「DATE_trunc( '小時',created_at)」)。算上

謝謝!

+1

您在上面發佈的鏈接很有用,能夠解決您的問題。如果你能夠提供更多關於遇到障礙的信息,比如代碼,錯誤日誌等,會更好。 –

+0

[Rails&Postgresql:如何按小時對查詢進行分組?](http://stackoverflow.com/問題/ 15182051/rails-postgresql-how-to-group-queries-by-hour) –

+0

嘿,謝謝你的回覆!當我查詢測試數據時,我得到{16.0 => 11},我不認爲這是正確的時區。我將如何設置時區?作爲@EasonCaizhenLiu點的 – Wboy

回答

1

所有你需要的是創建這樣一個查詢:

SELECT date_trunc('hours', created_at), sum(value) 
FROM TableX 
GROUP BY date_trunc('hours', created_at) 

這一次使用的是建議的date_part數,它適合你的問題更好date_trunc。

+0

謝謝!我將如何能夠在此查詢中設置時區? – Wboy

+0

Timezone是一個連接範圍的會話屬性。運行SET TIME ZONE'Europe/Rome';連接後。 –

+0

這就是SQL方面,是嗎?雖然我使用Rails ORM,但在這裏設置時區可能會影響應用程序的其餘部分。有沒有辦法只與區域查詢?這是我迄今爲止: TableX.group(「DATE_trunc('hour',created_at)」)。count – Wboy