Maik W. aus E.: mySQL 4.1.15 - Mit Zeiten rechnen

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

  1. 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  
    
    
    1. 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