Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Curdate() a zwykla data
Forum PHP.pl > Forum > Bazy danych > MySQL
Aztech
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??
popbart
A w jakim formacie masz zapisaną datę?
Aztech
w polu date yyyy-mm-dd
popbart
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
Aztech
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 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. ?>
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.