Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [mysql][php] Sumowanie kolumny z czasem, i konwertowanie otrzymanego wyniku
lukash82
post 23.01.2011, 19:24:09
Post #1





Grupa: Zarejestrowani
Postów: 320
Pomógł: 2
Dołączył: 17.03.2006
Skąd: Siemianowice

Ostrzeżenie: (0%)
-----


Witam,

Mam w tabeli kolumnę z czasem, pole typu TIME. I teraz chciałbym otrzymać czas całkowity z całej kolumny więc robię odpowiedniego selecta z opcją SUM(). Otrzymuję jednak nieco dziwny wynik, który wartości zapisane w formacie 00:00:00 zlewa w jedną całość... Wartości do zsumowania jest dosyć sporo więc posłużę się ekstremalnym przypadkiem sumowania dwóch czasów maksymalnych dla pola time, czyli 838:59:59 (HH:MM:SS)

838:59:59 + 838:59:59 = 1677:59:58

Dostaje jednak wynik typu 16771918

Najprościej byłoby zapytać czy istnieje jakaś funkcja, która by mi ten wynik rozbiła na poszczególne wartości godzin, minut i sekund. Ale niestety nic nie wyguglałem więc chyba trzeba to samemu obrobić... Wyciągam więc ilość cyfr z otrzymanego wyniku za pomocą strlen()

  1. ile_cyfr = strlen($row['czas'])


żeby wiedzieć jakie wartości zastosować w substr(), którą następnie wyciągam odpowiednie składniki czasu

  1. $godziny = substr($row['czas'], 0, 4);
  2. $minuty = substr($row['czas'], 4, 2);
  3. $sekundy = substr($row['czas'], -2);
  4. $suma_czasu = $godziny .":". $minuty .":". $sekundy;


i w tym przypadku otrzymuję wynik typu 1677:19:18 czyli prawie, prawie ale jednak jak widać minuty i sekundy są pomniejszone o 40 ponieważ sumowanie w mysql odejmuje wartości nie od 60 a od 100 i tu powstaje różnica... Jeśli ktoś z Was wie jak to ugryźć, niekoniecznie moim sposobem to proszę o jakąś podpowiedź bo jak narazie jestem w kropce...:/ Pozdrawiam, Ł.
Go to the top of the page
+Quote Post
everth
post 23.01.2011, 19:38:21
Post #2





Grupa: Zarejestrowani
Postów: 782
Pomógł: 153
Dołączył: 21.07.2010

Ostrzeżenie: (0%)
-----


Może pomoże ci FROM_UNIXTIME. Dopuszcza formatowanie.


--------------------
Już mi się ani wiedzieć, ani tym bardziej myśleć nie chce.
[Think different]!
Go to the top of the page
+Quote Post
lukash82
post 24.01.2011, 11:06:44
Post #3





Grupa: Zarejestrowani
Postów: 320
Pomógł: 2
Dołączył: 17.03.2006
Skąd: Siemianowice

Ostrzeżenie: (0%)
-----


Witam.

Tylko w jakim sensie użyć tej funkcji... Zliczyć ile sekund minęło od godziny "0" i to konwertować...?
Go to the top of the page
+Quote Post
jacusek
post 24.01.2011, 11:30:05
Post #4





Grupa: Zarejestrowani
Postów: 262
Pomógł: 3
Dołączył: 18.10.2009
Skąd: Łódź

Ostrzeżenie: (0%)
-----


może spróbuj po stronie mysql tam są dwie fajne funkcje
time_to_sec to chyba w twoim przypadku
i sec_to_time
trochę trzeba pokombinować, ale w końcu całkiem nieźle sobie radzą w takim przypadku.
np w taki sposób:
  1. SELECT sec_to_time(time_to_sec('838:59:59')+time_to_sec('838:59:59'))

Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 13.07.2025 - 11:22