2010-12-19 16 views
0

Ich möchte die Unterschiede zwischen zwei Zeitspalten in einer Tabelle zusammenfassen. Ich benutze den folgenden Code, aber es gibt Null zurück, weil end_time nicht richtig analysiert wird. Beide Spalten sind Zeitstempel.Schienen 3 Aggregatfunktionen mit Zeitstempeln

table.sum("end_time - start_time") 

fand ich, wenn ich in table.sum („end_time“) eingegeben, die Summe war 2010. Dies ist ungerade, da eine Zeile in der Tabelle mit einem end_time von „2010-12-18 23: 42:30 ".

Antwort

0

Sie können nicht „subtrahieren“ Zeiten, wenn sie UNIX Zeit sind ...

Lassen Schienen die Arbeit machen. Schreiben Sie eine Abfrage wie:

t = Table.find(:all, :conditions => {...}) 
t.each do |a| 
    puts a.end_time - a.start_time 
end 
+0

Danke, das scheint ein bisschen langsam, weil es die ganze Arbeit in Ruby statt SQL macht. Ich werde möglicherweise mit einer großen Anzahl von Elementen arbeiten. Es klingt so, als müsste ich sicherstellen, dass meine Ruby-Zeitwerte Unix-Timestamps sind. – chase

+0

Ich stimme zu. Ich würde empfehlen, UNIX-Zeitstempel zu verwenden und SQL die Arbeit machen lassen. SQL ist viel schneller – sethvargo