Avatar billede sevinding Juniormester
16. juli 2013 - 06:51 Der er 8 kommentarer og
1 løsning

Sum af tid

Hej.
Jeg bruger dette lille script

SEC_TO_TIME(SUM(TIME_TO_SEC(ec.tid))) AS sum,

til at lægge en masse timer, minutter og sekunder sammen.
Det har virket fint indtil Surftown opgraderede.
Nu vil det ikke udskrive tider over 838 timer 59 minutter 59 sekunder. Datatypen, 'ec.tid' er TIME.
Er der en der skulle ha en løsning?
Avatar billede arne_v Ekspert
17. juli 2013 - 02:24 #1
Det er korrekt en MySQL TIME kan kun gaa op til 838 timer.

Loesningen er at droppe SEC_TO_TIME og omregne fra sekunder til paen tid i PHP!
Avatar billede sevinding Juniormester
17. juli 2013 - 04:14 #2
Tak Arne.
Skulle du ha et lille eksempel på hvordan det så skal formuleres?
Avatar billede arne_v Ekspert
18. juli 2013 - 04:02 #3
Eksempel paa hvad?
Avatar billede sevinding Juniormester
18. juli 2013 - 05:43 #4
Hvordan jeg skal formulere dette

SEC_TO_TIME(SUM(TIME_TO_SEC(ec.tid))) AS sum,

så det giver mere end 838 timer.
Hvis jeg bare skriver

SUM(TIME_TO_SEC(ec.tid)) AS sum,

får jeg bare sekunder.
Hvordan omregner jeg så til timer, minutter og sekunder?
Avatar billede arne_v Ekspert
18. juli 2013 - 14:58 #5
Lige ud af landevejen.

Demo:

<?php
$t = 93784;
$tmp = $t;
$days = (int)($tmp / (24*60*60));
$tmp = $tmp - $days * (24*60*60);
$hours = (int)($tmp / (60*60));
$tmp = $tmp - $hours * (60*60);
$mins = (int)($tmp / 60);
$tmp = $tmp - $mins * 60;
$secs = $tmp;
echo "$t seconds = $days days $hours hours $mins minutes $secs seconds";
?>
Avatar billede sevinding Juniormester
19. juli 2013 - 09:34 #6
Hej igen.
Det er et eminent script.
Jeg kan bare ikke lure, hvordan jeg kan kombinere det med dette:

echo "<td width='300' align='right'>";

$amount = mysql_query("SELECT SUM(TIME_TO_SEC(tid)) AS sekunder FROM etapeclass WHERE rytter = $w[rytterid]");
while($a = mysql_fetch_array($amount)) { echo "$a[sekunder]"; }

echo "</td>";

og få det ud som dage, timer, minutter og sekunder, da der er tale om forskellige antal sekunder fra en tabel der skal lægges sammen og omregnes for den enkelte rytter.

Se:

http://www.tourfacts.dk/rider/overall_distance.php
Avatar billede arne_v Ekspert
19. juli 2013 - 14:36 #7
GROUP BY i SQL og saa lav beregningen inden i while loekken.
Avatar billede sevinding Juniormester
19. juli 2013 - 15:01 #8
Tak skal du ha.
Så er der lige lidt at lege med.
Smider du et svar, så jeg ka blive gældfri?
Avatar billede arne_v Ekspert
19. juli 2013 - 15:16 #9
svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester