Alle tijden optellen uit een tabel

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • xs2bas
  • Registratie: December 2001
  • Laatst online: 18-10-2022
Ik probeer mbv php het totaal aantal gewerkte uren voor een bepaald project uit de database te halen, maar ik krijg dit niet voor elkaar.

Stel dit zijn de tijden die ik op wil tellen:
01:00:00 en 02:30:00 en ik gebruik een simpele +, dan komt er 3 uit (som vh aantal hele uren)

Dit heb ik ook geprobeerd:
$sql = mysql_fetch_assoc(mysql_query('SELECT SUM(uren) AS totaal FROM INTRA_UREN where project_id=$project_id'));
echo $sql['toaal'];

Hier komt wel iets uit, maar ik zie niet helemaal of ik nog moet delen door het aantal dagen/uren/minuten/seconden.

Zit hier inmiddels al dagen mee te klooien, hopelijk dat hier iemand is die weet hoe ik dit op kan lossen.

Acties:
  • 0 Henk 'm!

  • Kalentum
  • Registratie: Juni 2004
  • Laatst online: 23:05
Wat komt er uit als je SUM() gebruikt? Wat is het datatype van de kolom uren?

Misschien is het een idee om de tijdsduur als INT op te slaan in aantallen seconden of minuten. Dat werkt een stuk makkelijker.

Acties:
  • 0 Henk 'm!

  • McVirusS
  • Registratie: Januari 2000
  • Laatst online: 07-06 19:07
In welk type veld/formaat heb je de uren opgeslagen?

Als het een DATETIME/TIMESTAMP field is dan kan je werken met HOURS en MINUTES functie.

Acties:
  • 0 Henk 'm!

  • xs2bas
  • Registratie: December 2001
  • Laatst online: 18-10-2022
Zul je net zien, post je na dagen zoeken een vraag, kom je toch ineens de oplossing tegen:

PHP:
1
2
3
4
5
6
7
8
9
        $query_project = "SELECT * FROM intra_uren WHERE project_id=$project_id";
        $result_project = mysql_query($query_project);
        $totaal = array();
        while ($line = mysql_fetch_array($result_project, MYSQL_ASSOC)) {
          $tijd = explode(":",$line[uren]);
          $totaal[0] += $tijd[0];
          $totaal[1] += $tijd[1];
        }
        $totale_tijd = date("H:i", mktime($totaal[0],$totaal[1]));


Ik loop door alle tijden heen, split de tijd in uren en minuten en maak voor beiden een eigen som waarna mktime er netjes een totaal van maakt: 2 uur + 140 minuten wordt dan 04:20 ...

Acties:
  • 0 Henk 'm!

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 16-06 13:10

MueR

Admin Tweakers Discord

is niet lief

Ik wil iets met SELECT * anders niet echt een oplossing noemen hoor. Daarbij ga je gruwelijk hard falen wanneer er meer dan 24 uur wordt besteed aan een project, aangezien een klok nou eenmaal niet voorbij de 23:59 gaat.

Anyone who gets in between me and my morning coffee should be insecure.


Acties:
  • 0 Henk 'm!

  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Can I get uhm...

Nope.

Als SUM() niet werkt gebruik je een verkeerd datatype.

https://oneerlijkewoz.nl
Het ergste moet nog komen / Het leven is een straf / Een uitgestrekte kwelling van de wieg tot aan het graf


Acties:
  • 0 Henk 'm!

  • jvaneijk
  • Registratie: Mei 2003
  • Laatst online: 29-05 12:10

jvaneijk

Dr.Oak

CodeCaster schreef op woensdag 25 maart 2009 @ 14:49:
[...]

Nope.

Als SUM() niet werkt gebruik je een verkeerd datatype.
datediff?

Begintijd en eindtijd opslaan deze voeden aan datediff en dan ben je er geloof ik.. Kan denk ik alleen met DateTime velden

[ Voor 24% gewijzigd door jvaneijk op 25-03-2009 15:22 ]

iRacing Profiel


Acties:
  • 0 Henk 'm!

  • OnTracK
  • Registratie: Oktober 2002
  • Laatst online: 23:17
The SUM() and AVG() aggregate functions do not work with temporal values. (They convert the values to numbers, which loses the part after the first non-numeric character.) To work around this problem, you can convert to numeric units, perform the aggregate operation, and convert back to a temporal value.

Examples:
SQL:
1
2
SELECT SEC_TO_TIME(SUM(TIME_TO_SEC(time_col))) FROM tbl_name;
SELECT FROM_DAYS(SUM(TO_DAYS(date_col))) FROM tbl_name;

Not everybody wins, and certainly not everybody wins all the time.
But once you get into your boat, push off and tie into your shoes.
Then you have indeed won far more than those who have never tried.


Acties:
  • 0 Henk 'm!

  • winkbrace
  • Registratie: Augustus 2008
  • Laatst online: 08-06 16:00
Kijk, dát zijn nou handige mysql weetjes :)

Acties:
  • 0 Henk 'm!

  • xs2bas
  • Registratie: December 2001
  • Laatst online: 18-10-2022
Dat is um inderdaad! wat ik in eerste instantie had bedacht met mktime werkte inderdaad niet als je boven de boven de 24 uur komt.
Pagina: 1