Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Curdate() a zwykla data, Czemu to nie dziala?
Aztech
post
Post #1





Grupa: Zarejestrowani
Postów: 276
Pomógł: 3
Dołączył: 22.10.2003
Skąd: Wrocław

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


Mam dwa zapytania - pierwsze nie wiedziec czemu nie chce zwrocic mi zadnego wyniku, drugie (to z curdate() ) natomiast wyswietla wszystko bezproblemowo.
Pole "Data" przypisywane do $data_tur jest typu date i posiada wartosc.

1)

  1. $data_tur = $dane2["Data"];
  2. $sql = 'SELECT PID, Name, SUM( Skalpy ) , SUM( Gry ), SUM( Skalpy ) / SUM( Gry ) AS Rank, tournaments.Data'
  3. . ' FROM listrank' . ' LEFT JOIN tournaments ON tournaments.TurnID = listrank.TurnID AND tournaments.Data'
  4. . ' BETWEEN '.$data_tur.' - INTERVAL 2 year AND '.$data_tur
  5. . ' WHERE tournaments.Data IS NOT NULL '
  6. . ' GROUP BY PID'
  7. . ' ORDER BY Rank DESC';


2)
  1. $sql = 'SELECT PID, Name, SUM( Skalpy ) , SUM( Gry ), SUM( Skalpy ) / SUM( Gry ) AS Rank, tournaments.Data'
  2. . ' FROM listrank' . ' LEFT JOIN tournaments ON tournaments.TurnID = listrank.TurnID AND tournaments.Data'
  3. . ' BETWEEN curdate() - INTERVAL 2 year AND curdate()'
  4. . ' WHERE tournaments.Data IS NOT NULL '
  5. . ' GROUP BY PID'
  6. . ' ORDER BY Rank DESC';


Co tu jest nie tak??

Ten post edytował Aztech 16.10.2004, 01:23:02
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
popbart
post
Post #2





Grupa: Zarejestrowani
Postów: 255
Pomógł: 0
Dołączył: 22.04.2004
Skąd: Żoliborz

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


A w jakim formacie masz zapisaną datę?
Go to the top of the page
+Quote Post
Aztech
post
Post #3





Grupa: Zarejestrowani
Postów: 276
Pomógł: 3
Dołączył: 22.10.2003
Skąd: Wrocław

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


w polu date yyyy-mm-dd
Go to the top of the page
+Quote Post
popbart
post
Post #4





Grupa: Zarejestrowani
Postów: 255
Pomógł: 0
Dołączył: 22.04.2004
Skąd: Żoliborz

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


Zapytanie:
  1. SELECT '2004-10-10' - interval 2 year;

Ładnie zwróci 2002-10-10
Może błąd jest że warunek between jest w klauzurze join
  1. SELECT PID, Name, SUM( Skalpy ) , SUM( Gry ), SUM( Skalpy ) / SUM( Gry ) AS Rank, tournaments.DATA
  2. FROM listrank LEFT JOIN tournaments ON USING(TurnID)
  3. WHERE tournaments.DATA IS NOT NULL AND tournaments.DATA BETWEEN '.$data_tur.' - INTERVAL 2 year AND '.$data_tur.'
  4. GROUP BY PID
  5. ORDER BY Rank DESC
Go to the top of the page
+Quote Post
Aztech
post
Post #5





Grupa: Zarejestrowani
Postów: 276
Pomógł: 3
Dołączył: 22.10.2003
Skąd: Wrocław

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


Warunek nie jest błędny - bo wtedy nie zwróciłoby wyniku gdy podane jest curdate().
Sprawdzilem co się będzie działo jak podam źle date - wtedy nie zwraca i problem jest z datą - ale nie wiem jaki i tu jest pies pogrzebany (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)

EDIT

Juz znalazlem rozwiazanie. caly bajer polegal na dodaniu znaku: ' przed i po dacie.

  1. <?php
  2.  $sql = 'SELECT PID, Name, SUM( Skalpy ) , SUM( Gry ) as SG , SUM( Skalpy ) / SUM( Gry ) AS Rank, tournaments.Data'
  3. . ' FROM listrank'
  4. . ' LEFT JOIN tournaments ON tournaments.TurnID = listrank.TurnID AND tournaments.D
  5. ta'
  6. . ' BETWEEN ''.$data_tur.'' - INTERVAL 2 YEAR AND ''.$data_tur.'''
  7. . ' WHERE tournaments.Data IS NOT NULL '
  8. . ' GROUP BY PID'
  9. . ' ORDER BY Rank DESC';
  10. ?>


Ten post edytował Aztech 16.10.2004, 15:09:27
Go to the top of the page
+Quote Post

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: 23.08.2025 - 18:30