mySQL 4.1.15 - Mit Zeiten rechnen
Maik W. aus E.
- datenbank
Tach zusammen,
ich bastele gerade an einem Zeitverwaltungs-System und bin dabei auf einen mysteriösen Fehler gestoßen:
Aus der Tabelle der verwendeten Zeiten lasse ich mit
SELECT name, projekt_ref, TIMEDIFF( ende, anfang ) AS diff
FROM azvs_arbeiten
WHERE blabla
alle "verbrauchten" Zeiten aus den (mit TIME formatierten) Spalten ausgeben. So weit, so gut. Wenn ich jetzt aber die einzelnen Arbeiten zusammenfassen will:
SELECT name, projekt_ref, SUM(TIMEDIFF(ende,anfang))as diff
FROM azvs_arbeiten
WHERE blabla
GROUP BY name
kommt nur eine Ganzzahl heraus, die die Werte hinter dem ":" nicht berücksichtigt, also auch nicht rundet. Meine Versuche mit SUBTIME
brachten keine Unterschiede.
Hat jemand eine Idee, wie ich meine Minuten auch mit in's Spiel bekomme?
Danke und
http://www.gruss-aus-essen.de
Maik
Hallo,
Wenn ich jetzt aber die einzelnen Arbeiten zusammenfassen will:
SELECT name, projekt_ref, SUM(TIMEDIFF(ende,anfang))as diff
FROM azvs_arbeiten
WHERE blabla
GROUP BY name
> kommt nur eine Ganzzahl heraus, die die Werte hinter dem ":" nicht berücksichtigt, also auch nicht rundet. Meine Versuche mit SUBTIME
> brachten keine Unterschiede.
Kann es zu einem namen unterschiedliche projekt\_ref geben? Wenn nein, dann muss die Gruppierung
... GROUP BY name, projekt\_ref
heißen. Wenn doch, dann muss projekt\_ref aus der Feldliste raus.
> Hat jemand eine Idee, wie ich meine Minuten auch mit in's Spiel bekomme?
Summiere Sekunden, indem Du das Time-Format mit [TIME_TO_SEC(time)](http://dev.mysql.com/doc/refman/4.1/en/date-and-time-functions.html) in ein rein numerisches Format umwandelst:
... SUM(TIME\_TO\_SEC(TIMEDIFF(ende,anfang)))...
und wandle diese ggf. wieder in ein Time-Format zurück:
[SEC_TO_TIME(seconds)](http://dev.mysql.com/doc/refman/4.1/en/date-and-time-functions.html):
... SEC\_TO\_TIME(SUM(TIME\_TO\_SEC(TIMEDIFF(ende,anfang))))...
viele Grüße
Axel
Tach auch Axel,
Hat jemand eine Idee, wie ich meine Minuten auch mit in's Spiel bekomme?
Summiere Sekunden, indem Du das Time-Format mit TIME_TO_SEC(time) in ein rein numerisches Format umwandelst:
... SUM(TIME_TO_SEC(TIMEDIFF(ende,anfang)))...
Ah, o.k. Also so doch so herum. Ich dachte es gäbe einen Parameter bei SUM(), den ich übersehen habe...
Guten Rutsch und
http://www.gruss-aus-essen.de
Maik