Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Suma godzin w kolumnie TIME
Forum PHP.pl > Forum > Przedszkole
8_pasarzer_NOSTROMO
Witam

mam w bazie danych kolumnę o wartości TIME, a w niej następujące wartości.

01:00:00
00:10:00
00:10:00


Jak pobrać sumę tych godzin by uzyskać wynik 01:20:00. Bo próbuje i za chiny ludowe nie idzie.
8_pasarzer_NOSTROMO
@ nospor
Dzięki wielkie kolego. Na Ciebie zawsze można liczyć. Będziesz kiedyś w Legnicy i będzie problem z Panami w mundurze to daj znać.
Pozdrawiam
nospor
A co, tak rozrabiaja ci w mundurze tam? wink.gif
8_pasarzer_NOSTROMO
Witam, musiałem tu wrócić.

Zsumowałem godziny z pola TIME.

  1. $zapytanie = "SELECT SEC_TO_TIME(SUM(TIME_TO_SEC(ile_konwoj))) as suma FROM sklad";
  2. $wykonaj=mysql_query($zapytanie);
  3. $wynik=mysql_fetch_assoc($wykonaj);
  4. $il_godz = $wynik['suma'];


Ale problem mam taki, że wyników jest tak dużo, że za każdym razem wydaje mi wynik 838:59:59. Czyli max chyba dla tego rodzaju pola. Jak to obejść i zliczyć więcej ?

nospor
https://dev.mysql.com/doc/refman/5.5/en/time.html
Tak, przekroczyles zakres

A nie mozesz sobie tego obrobic w php i wyswietlic jak ci sie podoba? W sensie z mysql pobieraj tylko sekundy bez formatowania ich do TIME
8_pasarzer_NOSTROMO
Jeszcze raz proszę o pomoc. Tak jak pisał nospor pobrałem wszystko jako sekundy do jednej tablicy.

  1. $zapytanie = "SELECT TIME_TO_SEC(ile_konwoj) FROM sklad";
  2. $wykonaj = mysql_query($zapytanie) or die ("Błąd = 115<br> ".mysql_error());
  3. while($wiersz = mysql_fetch_array($wykonaj))
  4. {$ile_godz[]=$wiersz['0'];}
  5. if(isset($ile_godz)){$suma_godz=array_sum($ile_godz);}


Po zsumowaniu elementów tablicy wyszło mi 56623200 sekund. W jaki sposób zamienić to na ilość godzin i minut.
Winno być coś koło 15728:XX:XX

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Zamieniłem wiec podaje gotowe rozwiązanie :

  1. $ile_godz='56623200';
  2. if(isset($ile_godz))
  3. {$suma_godz=array_sum($ile_godz);
  4. $czas = round($suma_godz);
  5. echo $il_godz = sprintf('%02d:%02d', ($czas/3600),($czas/60%60));}


Dziękuje wszystkim.
nospor
Sumowanie miales zostawic w zapytaniu mysql. Jedyne co miales zrobic to nie zamieniac potem tego sumowania w mysql na czas.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.