2016-08-19 7 views
0

Ich habe Schwierigkeiten beim Abfragen von Daten um eine Stunde für den vorherigen Tag. Verwenden von Rails 4 auf Postgres.Rails Abfrage Daten pro Stunde

zB

Table X: 

created_at, value 

timestamp1 3 
timestamp2 5 

Ich möchte bekommen:

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

im Grunde die Summe pro Stunde. Ich habe versucht,

Rails & Postgresql: how to group queries by hour?

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

aber ich kann immer noch nicht herausfinden, wie es zu bekommen richtig zu arbeiten, erhalte ich die falsche Stunde für Antworten. Wie würde ich meine Zeitzone zusammen mit dieser Abfrage einstellen?

TableX.group ("DATE_TRUNC ('Stunde', created_at)").

Dank zählen!

+1

Der oben genannte Link ist nützlich und in der Lage, Ihr Problem zu lösen. Es wäre besser, wenn Sie mehr Informationen über Hindernisse, die Sie begegnen, wie Codes, Fehlerprotokolle usw. zur Verfügung stellen können. –

+0

Mögliches Duplikat von [Rails & Postgresql: Wie gruppiert man Abfragen nach Stunden?] (Http://stackoverflow.com/ Fragen/15182051/rails-postgresql-how-to-group-Abfragen von Stunde) –

+0

Hey vielen Dank für Ihre Antwort! Ich bekomme {16.0 => 11}, wenn ich nach Testdaten frage, ich glaube nicht, dass dies die richtige Zeitzone ist. Wie würde ich die Zeitzone einstellen? – Wboy

Antwort

1

Alles, was Sie brauchen, ist eine Abfrage wie diese erstellen:

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

Dieses verwendet DATE_TRUNC statt vorgeschlagen date_part, die besser auf Ihre Frage passt.

+0

DANKE! Wie könnte ich die Zeitzone in dieser Abfrage einstellen? – Wboy

+0

Zeitzone ist eine verbindungsweite Sitzungseigenschaft. Führen Sie SET TIME ZONE 'Europa/Rom' aus; nach dem Verbinden. –

+0

Das ist die SQL-Seite, ja? Ich verwende jedoch das Rails ORM, und die Einstellung der Zeitzone könnte sich auf den Rest der App auswirken. Gibt es keine Möglichkeit, nur mit der Zone allein in Frage zu stellen? Folgendes habe ich bisher: TableX.group ("DATE_trunc ('hour', created_at)"). count – Wboy

Verwandte Themen