Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Roznica miedzy data
Forum PHP.pl > Forum > Przedszkole
redxill
Witam,
w bazie mam 25 roznych dat oczywiscie format unixowy, w jaki sposob moge obliczyc roznice miedzy tymi czasami? Chodzi o roznice miedzy 1 i2, 2 i 3, 3 i 4, i tak az do 24 i 25
Nie wiem jak sie do tego zabrac, jest jakis poradnik, albo przynajmniej jakies slowa kluczowe dzieki ktorym nabiore wiecej informacji jak mam w ogole zaczac?
Prosze was o pomoc

Pozdrawiam
trueblue
Słowa kluczowe: pętla for, różnica dwóch elementów.
redxill
a co jesli bede mial nieokreslona liczbe czasow w bazie?
trueblue
To nadal te same słowa kluczowe.
Tomplus
to zamiast for, użyj foreach albo while
redxill
Metoda while mam wyjete wszystkie czasy z bazy:

$polacz = mysqli_query($db_conn,'SELECT * FROM `date` ');
while($row=mysqli_fetch_array($polacz)) {
echo $row['time'].'</br>'
}

1 czas 1574354720-- roznica do 2 czas = 3600
2 czas 1574351120-- roznica do 3 czas = 3600
...
24 czas 1574315120--roznica do 25 czas = 3600
25 czas 1574311520--
tego nie wiem jeszcze
teraz potrzebuje roznice jakos wydobyc z tej tabeli, z czasami, ale nie wiem dalej jak sie za to wziasc?
trueblue
A musisz pobierać po jednym wierszu?

Jest metoda mysqli_fetch_all. Pobierzesz wszystkie wiersze naraz. Pętla for przy ograniczeniu z count.

Różnica między wierszem i+1, a wierszem i. Nad ostatnią wartością nie ma się co zastanawiać, bo... jest ostatnia, więc nie ma już kolejnego, prawda?
viking
A dodatkowo na podstawie czego wyliczasz ten czas bo w zapytaniu nie ma żadnego order by więc wyniki są losowe.
redxill
To jest testowa tabela i nie ma w niej nic wiecej, z pewnoscia w przyszlosci bedzie conajmniej oder by id.
Nie chce pobierac po jednym wierszu tylko wzystkie danego typu, wyswietlana jest teraz cala lista od 1 do 25 i potrzebuje dodac kolumne z boku jaka jest roznica miedzy kazdym nastepnym czasem, bedzie to bodajrze czas logowania?questionmark.gif
Chodzi o to jak mam rozbrac te $row['time'] na pojedyncze i obliczyc roznice miedzy nimi?
trueblue
Już Ci napisałem.
Pobierasz wszystkie wiersze poprzez mysqli_fetch_all. Pętlę tworzysz od 0 do count($tablica).
W pętli obliczasz różnicę między następnym elementem, a aktualnym.
viking
  1. CREATE TABLE IF NOT EXISTS `docs` (
  2. `id` int(6) UNSIGNED NOT NULL,
  3. `date` timestamp NOT NULL,
  4. PRIMARY KEY (`id`)
  5. ) DEFAULT CHARSET=utf8;
  6. INSERT INTO `docs` (`id`, `date`) VALUES
  7. (1, '2019-11-30 15:10:28'),
  8. (2, '2019-11-29 14:15:33'),
  9. (3, '2019-11-28 22:22:12'),
  10. (4, '2019-11-27 09:09:41'),
  11. (5, '2019-11-26 12:15:18');
  12.  
  13. SELECT
  14. *,
  15. TIMESTAMPDIFF(MINUTE,
  16. (SELECT MAX(date) FROM docs WHERE date < t.date),
  17. date
  18. ) AS minutediff
  19. FROM docs AS t
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-2024 Invision Power Services, Inc.