Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Porównywanie daty z bazy z obecną datą
Zikerus
post
Post #1





Grupa: Zarejestrowani
Postów: 19
Pomógł: 1
Dołączył: 22.01.2011

Ostrzeżenie: (0%)
-----


Witam, mam taki problem:

Mam tabele w bazie danych zawierajaca kolumne typu datetime - co chcialbym z tym zrobic:

Chcialbym uzyskac pierwszy rekord w tabeli, dla ktorego data jest wieksza od obecnej (mowiac prosciej, chcialbym pobrac rekord dotyczacy najblizszego wydarzenia, ktore bedzie mialo miejsce).

Nie mam pojecia z jakiej funkcji uzyskac obecny czas by mozna bylo porownac te daty, na chwile obecna mam:

  1. date>time() ORDER BY date ASC LIMIT 1

date - kolumna typu datetime.
Odziwo sprawdza sie to w przypadku gdy zmieniam znak nierownosci, natomiast nie dziala to w takim przypadku (czyli de facto nie dziala)

Zastanawiam sie wiec w jaki sposob moge dokonac takiego porownania by osiagnac oczekiwany rezultat.

Z góry dziekuje.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Zikerus
post
Post #2





Grupa: Zarejestrowani
Postów: 19
Pomógł: 1
Dołączył: 22.01.2011

Ostrzeżenie: (0%)
-----


Hmm, no to faktycznie, nie miałem pojęcia, że AND ma pierwszenstwo przed OR, dodalem teraz nawias i wszystko dziala tak jak powinno, wielkie dzieki.

Moglbys moze jeszcze mi powiedziec jaka wartosc zwraca zapytanie "SELECT COUNT(*)..."? Chcialbym uzyskac ilosc rekordow spelniajacych dane warunki, zeby potem wyliczyc sobie offset - teraz chcialbym wyswietlic kilka poprzednich zdarzen, kolejne i pare nastepnych, co za tym idzie:

  1. $q_offset = "SELECT COUNT(*) FROM `tb1` WHERE (`id_1`='{$v['id']}' OR `id_2`='{$v['id']}') AND `date` < CURRENT_TIMESTAMP()";


Chce zliczyc ilosc rekordow, ktore 'mialy' juz miejsce i wybrac z nich 3 ostatnie do syswietlenia (wedlug daty 3 ostatnie)

Czyli majac

20.01.2011
19.01.2011
24.01.2011
18.01.2011
16.01.2011
21.01.2011

Musze wyswietlic nastepujace rekordy w odpowiedniej kolejnosci:
19.01.2011
20.01.2011
21.01.2011

Dlatego chce wyliczyc offset (ogolna ilosc rekordow spelniajacych warunek - 3) i wtedy wyciagnac z bazy te 3 rekordy ostatnie spelniajace warunek. Nie wiem czy dobrze mysle, moze da sie to zrobic w inny sposob? Problem polega na tym, ze nie wiem jak wydobyc liczbe rekordow z tego zapytania, odziwo nigdy z niego nie korzystalem i sprawia mi trudnosci, nigdzie nie moge znalezc odpowiedzi.

BTW. ciezko bedzie podac strukture bazy, bo narazie to sa 2 id i data, danych tez za duzo do testowania nie mam, tylko kilka rekordow rozniacych sie od siebie data.

@EDIT

Wartosc SELECT COUNT(*) juz uzyskalem, moj blad. Zastanawiam sie jednak czy nie mozna tego zrobic w inny sposob (tego co opisalem)

@EDIT2

Jeszcze jedno pytanko, odbiegajace juz troche od tematu - czy mozna w jednej bazie zastosowac oba typy tabel (MyISAM i InnoDB)(IMG:style_emoticons/default/questionmark.gif) Pytam, ponieważ w bazie mam tabele, z ktorych bede de facto tylko odczytywal wartosci (cos jak katalog), ale mam tez takie, ktore beda czesto modyfikowane (przewaznie UPDATE).

Ten post edytował Zikerus 23.01.2011, 13:26:49
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 5.10.2025 - 22:52