Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> zapytanie jak inaczej
john_doe
post 24.11.2009, 00:50:46
Post #1





Grupa: Zarejestrowani
Postów: 873
Pomógł: 25
Dołączył: 24.07.2005

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


  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


Ten post edytował john_doe 24.11.2009, 01:41:29
Go to the top of the page
+Quote Post
phpion
post 24.11.2009, 08:27:11
Post #2





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




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.
Go to the top of the page
+Quote Post
john_doe
post 24.11.2009, 09:03:55
Post #3





Grupa: Zarejestrowani
Postów: 873
Pomógł: 25
Dołączył: 24.07.2005

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


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.
Go to the top of the page
+Quote Post
phpion
post 24.11.2009, 10:48:58
Post #4





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




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ć.
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 13:54