Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: zapytanie jak inaczej
Forum PHP.pl > Forum > Bazy danych > MySQL
john_doe
  1. SELECT query_date
  2. `querries`
  3.  
  4. WHERE `querries`.`query_stop` > CURDATE()


chce wyświetlić rekordy z data większą od daty aktualnej. pole query_stop jest typu DATE czyli 2009-11-22
niesteety jest błą w klauzuli WHERE

incorrect syntax


//EDIT

zrobiłem tak

  1. SELECT
  2.  
  3. query_start,
  4. `query_stop`, DATEDIFF( query_stop, CURDATE() ),
  5. DATEDIFF( query_start, CURDATE() )
  6.  
  7. FROM `querries`
  8.  
  9.  
  10. WHERE DATEDIFF( query_stop, CURDATE() ) >= 0
  11.  
  12. AND DATEDIFF( query_start, CURDATE() ) <= 0
phpion
Oj, ale poszalałeś. Nie wiem czy zdajesz sobie z tego sprawę, ale Twoje zapytanie będzie nieefektywne. Dlaczego? Ponieważ funkcja CURDATE() należy do grupy funkcji niedeterministycznych. Co to oznacza? Że za każdym razem (dla każdego rekordu) pobierany jest aktualny czas. Ponadto wywołujesz ją 4 razy, co nie wróży dobrze wydajności. Zdecydowanie lepiej jest podstawić datę do zapytania po stronie PHP. Tyle ode mnie, jako ciekawostka.
john_doe
thx phpion, cenna ciekawostka.

finalne zapytanie nie zawiera tych funkcji w SELECT jedynie w WHERE co nie zmienia faktu, że zrobię to od strony PHP.
Szkoda bo fajnie jeśli wszystko można zawrzeć w SQL.
phpion
Cytat(john_doe @ 24.11.2009, 11:03:55 ) *
Szkoda bo fajnie jeśli wszystko można zawrzeć w SQL.

Można ewentualnie utworzyć zmienną w SQL, do której przypiszesz aktualną datę, a potem wykorzystywać ją w zapytaniu. Wydaje mi się jednak, że nie warto tak kombinować.
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-2025 Invision Power Services, Inc.