Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Porównanie dat (dzień i miesiąc)
Forum PHP.pl > Forum > Przedszkole
krzesik
Witam trafiłem na zagwostkę i nie wiem jak to ruszyć, w sumie mam funkcję która działa ale niestety nie w miesiącu grudniu.........

mam w tabeli dwie kolumny z datami (data_od, data_do), z różnych powodów zapisuję ją w formacie mm-dd bez roku, następnie wyświetlam poszczególne rekordy gdy dzisiejsza data zawiera się pomiędzy data_od oraz data_do. Wstawiłem do zapytania dodatkowo warunek sprawdzający czy data_do nie jest czasem większa od data_od bo to oznacza przełom roku. Wszystko ładnie działa, ale niestety wali się jeśli skrypt jest uruchomiony w miesiący grudniu a data_do jest również grudniowa...... pomocy.....

  1. $month = date("m");
  2. $day = date("d");
  3. $dzisiaj = "$month-$day";
  4.  
  5.  
  6. //zapytanie
  7. $sql = "SELECT * FROM tabelka WHERE (($dzisiaj BETWEEN data_od AND data_do) OR (data_od>data_do AND ($dzisiaj NOT BETWEEN data_do AND data_od)))";
  8.  
mmmmmmm
BETWEEN uwzględnia również wartości graniczne (przedzial obustronnie domknięty). W tym drugim przypadku musisz zastosoać przedziały otwarte.
krzesik
ale nie w tym mam problem, problem polega na ty, że funkcja porównuje wpisane daty i jeśli data_od = 01-11 (pierwszy listopada), data_do = 31-12, a dzisiejsza data to 22-12 to rekord jest pomijany, myślę że zrobiłem błędne założenia podczas projektu, ale nie wiem jak to mam teraz zmienić. Proste by było gdybym miał pełne daty dd-mm-rrrr, ale niestety nie mogę tu brać pod uwagę roku......
mmmmmmm
To jak w końcu zapisujesz datę? dd-mm, czy mm-dd? W kodzie uwzględniasz mm-dd...
krzesik
mm-dd, ale jakie to ma teraz znaczenie? Sprawdzałem w taki i taki sposób....
mmmmmmm
Znaczenie ma takie, że zapisując (w bazie) datę w postaci dd-mm, to możesz wszystko wywalić i zacząć od nowa.
Bo 13-01 (1301)-13 styczeń, jest większa od 08-08 (0808) - 8 sierpnia. W rzeczywistości tak nie jest. Przy analogicznym zapisie mm-dd jest 0113 i 0808, więc jest wszystko w porządku. I twoje zapytania powinny działać prawidłowo. (tak mi się wydaje)
Ale musisz mieć tak zapisane w bazie i tak samo porównywać.
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.