php idő kivonás és összeadás
Sziasztok!
Van egy elvi és egy gyakorlati kérdésem.
Kezdem hogy mit szeretnék:
Van két időpontom letárolva mySQL-ben azokat szeretném kivonni egymásból (a későbbiből a korábbit) majd az eredményt szeretném összedadni egy már ugyanilyen kivonásból származó eredménnyel.
Elvi kérdésem:
Mit érdemes használni MySQL-ben, datetime-ot, vagy timestampet?
Gyakorlati kérdésem:
Ha a datetime-ot választom akkor ezzel a kóddal le lehet tudni a dolgot (itt még nincs meg az összeadás, mert az istenért nem akar sikerülni az add-dal, tehát ha van valami egyszerű megoldás ne kíméljetek):Itt meg az a verzió van ha időbélyeget használok (itt hiányzik az összeadás, de ugye itt az nem nehéz mert csak a két időbélyeggel kell zsonglörködni):Azért itt tisztán látszik hogy nem éppen olyan elegáns megoldás mint a datetime-nál.
Én jelen pillanatban a datetime-ra szavaznék, de ott az összeadás még problémás számomra, de most kicsit elbizonytalanodtam és ezért kérem a segítségeteket amit előre is nagyon köszönök!
■ Van egy elvi és egy gyakorlati kérdésem.
Kezdem hogy mit szeretnék:
Van két időpontom letárolva mySQL-ben azokat szeretném kivonni egymásból (a későbbiből a korábbit) majd az eredményt szeretném összedadni egy már ugyanilyen kivonásból származó eredménnyel.
Elvi kérdésem:
Mit érdemes használni MySQL-ben, datetime-ot, vagy timestampet?
Gyakorlati kérdésem:
Ha a datetime-ot választom akkor ezzel a kóddal le lehet tudni a dolgot (itt még nincs meg az összeadás, mert az istenért nem akar sikerülni az add-dal, tehát ha van valami egyszerű megoldás ne kíméljetek):
// ez a már letárolt idő amihez hozzá kell adni a kivonás eredményét
$date0 = new DateTime('00:10:00');
//ez itt a kivonás
$date1 = new DateTime('2015-10-28 17:00:00');
$date2 = new DateTime('2015-10-28 17:09:02');
$diff = date_diff($date2,$date1);
echo 'kivonás: ' . $diff->format('%H:%I:%S') . '<br /><br />';
function time_elapsed_A($secs){
$bit = array(
'év' => $secs / 31556926 % 12,
'hét' => $secs / 604800 % 52,
'nap' => $secs / 86400 % 7,
'óra' => $secs / 3600 % 24,
'perc' => $secs / 60 % 60,
'másodperc' => $secs % 60
);
foreach($bit as $k => $v)
if($v > 0)$ret[] = $v . $k;
return join(' ', $ret);
}
$nowtime = 1420390089;
$oldtime = 1420389959;
//itt hozzáíródik hogy perc, másodperc, stb, de ez már csak formázási gyakorlat hogy például 00:02:10 legyen
echo 'kivonás: ' . time_elapsed_A($nowtime-$oldtime);
Én jelen pillanatban a datetime-ra szavaznék, de ott az összeadás még problémás számomra, de most kicsit elbizonytalanodtam és ezért kérem a segítségeteket amit előre is nagyon köszönök!
Timestamp
timestamp
-ben tárolni az adatokat, vagy lekérdezésbenSELECT UNIX_TIMESTAMP(datum) AS idobelyeg;
-et használni.működés
Az az elképzelés hogy minden munkafázisomhoz felveszek egy rekordot, majd elindítok egy számlálót és a munka végeztével megállítom azt. Ha ez az első akkor az mentődik el, ha nem akkor egy 'összes' rekordban hozzáadódik az ott már letárolthoz.
Ez légyegében egy stopper ami összeadja a részidőket, csak már baromira unom írni ezeket :D
Na és akkor itt jön a kérdés a válaszodhoz:
Ha van kb 200 munkafázisom, és nincs letárolva az előzőek összege, akkor minden 'összes' megjelenítésnél a MySQL-t túráztatom, nem?
Ha van kb 200 munkafázisom,
Igen, akkor valamelyik végen dolgoztatni fogod a processzort. Vagy MySQL vagy PHP oldalon. Egyébként nem szokás számítható adatokat tárolni adatbázisban, kivéve gyorsítótár céljából.