• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Jak skonstruować zapytanie do bazy danych

Object Storage Arubacloud
0 głosów
783 wizyt
pytanie zadane 14 sierpnia 2016 w PHP przez Abel Mądrala (5,140 p.)
Więc tak jak w temacie

Mam problem z napisaniem właściwego zapytania do bazy danych

Mam tabele w której jest kolumna "ostatnie_logowanie" , do tej kolumny zapisuje się data oraz godzina ostatniej aktywności usera na stronie . Jakie zapytanie powinienem wysłać do bazy żeby wyświetlić "Aktywni przez ostatnie 24h"
Zapytanie które sprawdzi kto był aktywny w przeciągu ostatnich 24 godzin

2 odpowiedzi

0 głosów
odpowiedź 14 sierpnia 2016 przez Surykat Stary wyjadacz (14,780 p.)
Musisz pobrać aktualny czas i wyciągnąć z bazy te wyniki, gdzie różnica między aktualnym czasem, a tym w kolumnie ostatnie_logowanie jest mniejsza niż 24 godziny. Poszperaj w dokumentacji sql o porównywaniu dat i wyciągania daty z czasu systemowego.
komentarz 14 sierpnia 2016 przez Abel Mądrala (5,140 p.)

No tak 

czytałem ale jakoś nie umie się doczytać właściwego zapisania tego zapytania

Mam teraz tak 

Select user,ostatnie_logowanie From online Where ostatnie_logowanie < DATE_SUB(NOW() ,INTERVAL 24 HOUR)

Jednak to nie zwraca tego czego oczekuje , to zapytanie zwraca wszystko starsze od 24 godzin  tak też jest to opisane http://dev.mysql.com/

Jednak nie doczytałem się tam jak skonstruować zapytanie które nie będzie uwzględniać nic co jest starsze od podanego zakresu 

komentarz 14 sierpnia 2016 przez Surykat Stary wyjadacz (14,780 p.)
Odwróć dzióbek. ;)
0 głosów
odpowiedź 14 sierpnia 2016 przez GaCeL Dyskutant (7,500 p.)
SELECT * FROM x WHERE date >= now() - INTERVAL 1 DAY;

 

komentarz 14 sierpnia 2016 przez Abel Mądrala (5,140 p.)

>= daje zalogowanych teraz oraz w przyszłości smiley

<= daje ten sam efekt który już uzyskałem za pomoca tego zapytania które przedstawiłem wyżej 

Czyli wyświetla osoby które były zalogowane 3 dni temu sad

komentarz 14 sierpnia 2016 przez Abel Mądrala (5,140 p.)

już sobie poradziłem , nie wiem czy dobrze smiley

Napisałem takie coś laugh

$kto_online = $polaczenie->query("Select * From online  ");
							
    while($wiersz = $kto_online->fetch())
	{
	    $dzisiaj=date("Y-m-d H:m:s"); 
	    $wynik=round((strtotime($dzisiaj)-strtotime($wiersz['ostatnie_logowanie']))/86400);
		if($wynik <= 1)
			{
			    echo $wiersz['user'] . ',' ;
			}

Wydaje się to działać w sposób jakiego oczekiwałem , niemniej proszę was o ocenę 

 

Podobne pytania

0 głosów
2 odpowiedzi 840 wizyt
pytanie zadane 10 marca 2017 w PHP przez seba Dyskutant (8,900 p.)
0 głosów
1 odpowiedź 2,584 wizyt
pytanie zadane 28 lipca 2017 w SQL, bazy danych przez Mateusz1223 Bywalec (2,440 p.)
0 głosów
0 odpowiedzi 172 wizyt
pytanie zadane 22 lutego 2023 w C# przez marek.nowak404 Nowicjusz (220 p.)

92,703 zapytań

141,616 odpowiedzi

320,180 komentarzy

62,062 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...