2011-01-04 6 views
2

Ich habe ein Problem mit Aggregat SUM Funktion in JPA (Eclipselink v.2.1.2), die auf MySql-Datenbank ausgeführt wird. Ich muss Werte in einem Feld vom Typ 'TIME' summieren. Die ausgeführte Abfrage gibt jedoch ein falsches Ergebnis zurück. Zum Beispiel habe ich zwei Werte ('04: 15: 00' und '05: 50: 00') und das Ergebnis ist 96500. Query (JPQL) ist:Sum Time Feldwerte in JPA

SELECT SUM(w.timeSpent) FROM WorkingHours w 

Was ist der richtige Weg ist Summe Zeitwerte in JPA?

Vielen Dank im Voraus.

Antwort

2

In Eclipse (> = 2.1) Sie könnten versuchen,

SELECT FUNC('SEC_TO_TIME', SUM(FUNC('TIME_TO_SEC', w.timeSpent))) FROM WorkingHours w 
+0

Es funktioniert! Vielen Dank. – Vladimir

1

Ist das Ergebnis eine Zeit oder eine Ganzzahl?

Welche SQL wird generiert und was gibt MySQL zurück? Könnte genau das sein, was MySQL zurückgibt. Versuchen Sie eine native SQL-Abfrage mit derselben SQL.

+0

Nun, ist das Ergebnis doppelt. Wenn ich SQL in der MySQL-Konsole ausführe, die mir eine Summe geben soll (SELECT timeSpent FROM WorkingHours), bekomme ich auch ein Ergebnis, das nicht im TIME-Format ist. Ich nehme an, es gibt einen anderen Weg, um die Summe in MySQL zu berechnen, aber ich bin mir nicht sicher, ob JPQL dasselbe ausführen könnte. – Vladimir

+0

Es scheint, dass ich es in JPQL nicht machen könnte. Native Abfrage sollte wie folgt aussehen: SELECT SEC_TO_TIME (SUM (TIME_TO_SEC (w.TimeSpent))) FROM WorkingHours w – Vladimir