Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Porównanie dwóch okresów czasu
Forum PHP.pl > Forum > Bazy danych > MySQL
mercs600
Witam mam taki problem. W tabeli mam takie pola data_od i data_do. I np w data_od mamy 2010-03-13 a w data_do 2010-03-20. I teraz ten zakres daty od do chciałbym porównać z wpisaną datą w formularzu, tzn użytkownik wpisuje datę np. od 2010-03-14 do 2010-03-18 i powinien wyświetlić się błąd, że ta data jest zajęta. Cały czas myślę nad zapytaniem i nie mogę wymyślić.
eccocce
  1. SELECT * FROM tabela WHERE tabela.data_od <= $data1 AND tabela.data_do >= $data2

za składnie nie ręczę (nie pamiętam, czy można tak porównywać daty), ale jeśli pod $data1 i $data2 umieścisz daty z formularza to takie zapytanie powinno ci zwrócić wynik, którego zakres obejmuje podany zakres w formularzu smile.gif i wtedy będziesz wiedział, że trzeba wywalić błąd
mercs600
dzięki zwraca to co powinien, tylko teraz pomyślałem, że będzie dla mnie lepiej jeśli rozbije sobie jedną datę na 3 pola: od_dzien, od_miesiac, od_rok i do_dzien, do_miesiac, do_rok jak mam teraz skonstruować zapytanie w podobny sposób do tego co mi podałeś ?

  1. SELECT * FROM zamowienia WHERE zamowienia.od_dzien <= $od_dzien AND zamowienia.od_miesiac <= $od_miesiac AND zamowienia.od_rok <= $od_rok AND zamowienia.do_dzien >= $do_dzien AND zamowienia.do_miesiac >= $do_miesiac AND zamowienia.do_rok >= $do_rok;
piotrdd2
  1. $data1=$od_rok."-".$od_miesiac."-".$od_dzien;
  2. $data2=$do_rok."-".$do_miesiac."-".$do_dzien;


  1. SELECT * FROM tabela WHERE tabela.data_od <= $data1 AND tabela.data_do >= $data2


powinno działać
mercs600
No tak to będzie dobra opcja biggrin.gif dzięki
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.