Portál AbcLinuxu, 10. května 2025 06:36
SELECT DATEDIFF(CURDATE(), datum) AS `interval` FROM tabulka
SELECT FROM_UNIXTIME(UNIX_TIMESTAMP('2006-10-10 10:10:10') - UNIX_TIMESTAMP('2006-09-10 10:00:00'))
ale to znemožní odčítat data starší než 1970.
Obávam sa, že výsledkom toho date() bude v tomto prípade zbytočne mätúci údaj vyzerajúci nejak takto: 1970-01-?? ??:??:??. Tie strtotime() sú OK, sám ich už dlho používam na konverziu z ISO-tvaru na timestamp. Aj ten rozdiel je OK - vráti rozdiel oboch údajov v sekundách. Ale to spätné naformátovanie na dátum je nezmyslom, pretože timestamp nemá začiatok v roku 0. Ak treba zo sekúnd vyrátať minúty, hodiny, dni, tak pomôže len delenie.
$sek=strtotime($date1)-strtotime($date2); $min=floor($sek/60); $sek=$sek%60; $hod=floor($min/60); $min=$min%60; $dni=foor($hod/24); $hod=$hod%60; echo "Rozdiel je $dni dni, $hod hodin, $min minut a $sek sekund.\n";
$hod=$hod%24; // nie %60
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.