Autor | Zpráva | ||
---|---|---|---|
Duchaplny Profil |
Zdravím,
pokúšam sa odčítať od seba dva DATETIME stĺpce z tabuľky a získať ich rozdiel. V MySQL mám uložené dva stĺpce "pridane" a "vyriesene". Obidva sú formát DATETIME a vkladajú sa do nich hodnoty z funkcie now() .
Výsledok, ktorý chcem je vlastne rozdiel v dátumoch: x = vyriesene - pridane // vyriesene = 2012-02-11 20:02:26, pridane = 2012-02-10 20:02:26 x = 01:00:0000 - 00:00:00 // príp. lepší zápis: 0r,0m,1d - 0h,0m,0s To čo som našiel na nete, riešilo odčítanie buď len dátumu abo len času, príp. intervaly a neviem či to vôbec nejak riešilo prechod na letný/zimný čas. Ak by to ale bolo možné, tak by som tieto výpočty radšej robil priamo v SQL dotaze SELECT a v PHP len vypisoval výsledok na stránku. Vie niekto poradiť ? |
||
Časová prodleva: 3 dny
|
|||
Duchaplny Profil |
Vymyslel som niečo takéto:
SELECT TIMESTAMPDIFF(YEAR, '2012-02-10 20:02:26', '2013-03-13 21:13:27') as ROK, TIMESTAMPDIFF(MONTH, '2012-02-10 20:02:26', '2013-03-13 21:13:27') as MESIAC, TIMESTAMPDIFF(DAY, '2012-02-10 20:02:26', '2013-03-13 21:13:27') as DEN, TIMESTAMPDIFF(HOUR, '2012-02-10 20:02:26', '2013-03-13 21:13:27') as HODINA, TIMESTAMPDIFF(MINUTE, '2012-02-10 20:02:26', '2013-03-13 21:13:27') as MINUTA, TIMESTAMPDIFF(SECOND, '2012-02-10 20:02:26', '2013-03-13 21:13:27') as SEKUNDA; výsledok: ROK MESIAC DEN HODINA MINUTA SEKUNDA 1 13 397 9529 571751 34305061 Toto mi však nie je k ničomu, pretože mi to píše hrubý čas a neviem, asi by som musel každú položku prejsť nejakou php funkciou (netuším akou), aby to zobrazovalo podľa predstáv. príklad: pridane = 2012-02-10 20:02:26 vyriesene = 2012-02-11 14:04:30 Rozdiel času = 1 deň, 18 hod, 2 Min, 4 Sek // dúfam, že je to správne, už mi to nemyslí V podstate ide o to, aby som videl, za aký dlhý čas sa vyriešila požiadavka, ktorú som pridal. Vie niekto poradiť ? Ja už vážne netuším ako ďalej. |
||
Duchaplny Profil |
Toto je najďalej ako som sa dostal.
$sek=strtotime("2012-02-21 20:02:26")-strtotime("2012-02-10 21:03:31"); $min=floor($sek/60); $sek=$sek%60; $hod=floor($min/60); $min=$min%60; $dni=floor($hod/24); $hod=$hod%24; echo "Rozdiel je $dni dni, $hod hodin, $min minut a $sek sekund.\n"; výstup -> Rozdiel je 10 dni, 22 hodin, 58 minut a 55 sekund. Funguje to, ale len keď tam dátumy zadám ručne. Keď ich ťahám z MySQL a dám tam niečo ako: $sek=strtotime($vyriesene)-strtotime($pridane); ... strtotime() sa správa, akoby nepracoval so stringami. V čom je chyba ?
|
||
Duchaplny Profil |
Vyriešené..
|
||
Časová prodleva: 12 let
|
0