Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MYSQL]Zapytanie SELECT i opcja BETWEEN, działanie na zmiennych
TheaSiX
post 20.04.2009, 22:50:12
Post #1





Grupa: Zarejestrowani
Postów: 110
Pomógł: 10
Dołączył: 3.09.2006
Skąd: Bishop Auckland

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


Wprawdzie rozwiązałem już problem, o których chciałem wcześniej pisać (innym sposobem), to nadal mam niejasną sprawę do jednej rzeczy:

Staram się tworzyć coraz bardziej skomplikowane zapytanie do mojej bazy danych, aby się podszkolić i zyskać na czasie etc.

Chciałem sprawdzić dwa pola w jednej tabeli. Są to daty, ale (mój błąd - wiem) pola te są varchar a nie date, datetime czy timestamp. Mimo to chciałem wyświetlić wszystkie rekordy, które mieszczą się w danym przedziale czasowym. Na początku myślałem, że z powodu typu pola w tabeli coś może nie działać, ale poniższe zapytanie przyniosło oczekiwane rezultaty:

  1. <?php
  2. $sql = "SELECT id, purchase_date FROM products WHERE purchase_date BETWEEN '01.04.2009' AND '16.04.2009'";
  3. ?>


Jednak przez dwie godziny nie mogłem pojąć dlaczego nie działa zapytanie następujące:

  1. <?php
  2. $date_a = "01.04.2009";
  3. $date_b = "16.04.2009";
  4.  
  5. $sql = "SELECT id, purchase_date FROM products WHERE purchase_date BETWEEN '$date_a' AND '$date_b'";
  6. ?>


Powyższe zapytanie spowoduje wyświetlenie wszystkich rekordów tak jakby nie było w ogóle konstrukcji WHERE...

Próbowałem różnych sposobów(konwersja typu zmiennych, cudzysłowa zamiast apostrofów). Jednak nie znalazłem żadnego rozwiązania. Byłbym wdzięczny gdyby ktoś rozjaśnił mi sytuację smile.gif

Ten post edytował TheaSiX 21.04.2009, 21:17:18
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
piotrooo89
post 21.04.2009, 21:32:02
Post #2


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




a takie coś co Ci zwraca?

  1. <?php
  2. $month = $_POST["month"]; //powiedzmy, że przesyłam maj czyli $month = 05
  3.  
  4. $first = '01';
  5. $last = '31';
  6. $year = '2009';
  7.  
  8. $date_a = $first.'.'.$month.'.'.$year; //01.05.2009
  9. $date_b = $last.'.'.$month.'.'.$year; //31.05.2009
  10.  
  11. $sql = "SELECT id, purchase_date FROM products WHERE purchase_date BETWEEN '".$date_a."' AND '".$date_b."'";
  12. ?>


#EDIT
kropki mi się pozjadało.

Ten post edytował piotrooo89 22.04.2009, 07:39:42


--------------------
Go to the top of the page
+Quote Post

Posty w temacie


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: 23.06.2025 - 06:11