Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL]Porównanie dat
Forum PHP.pl > Forum > Przedszkole
kosma
  1. $dzis = date("Y-m-d");
  2. $zapytanie = mysql_query ("Select * FROM tabela WHERE kiedy = '$dzis' ");
  3. $ilosc = mysql_num_rows($zapytanie);


W bazie data zapisana w komórce kiedy w formacie DATATIME (Y-m-d H:m:s), jak mam dokonać porównania z dzisiejszą datą aby działało?

Edit
zmieniłem do testów
  1. $dzis = date("Y-m-d");

na
  1. $dzis=date("Y-m-d H:i:s");

i gdy daję warunek:
  1. 'kiedy' < '$dzis'

a na logikę powinno być zawsze mniejsze (od teraz) to nie wyszukuje żadnych wyników, natomiast gdy dam:
  1. 'kiedy' > '$dzis'

to wynik wygląda następująco:
Cytat
2009-09-07 03:41:55 - dzisiejsza data

2009-09-07 02:52:47 - data z komórki kiedy
2009-09-07 02:51:58 - data z komórki kiedy
2009-09-06 02:51:58 - data z komórki kiedy
2009-09-05 02:58:26 - data z komórki kiedy

i jak widać data z wczoraj, z przedwczoraj też zmieściła się w warunku > (większa)
no nie rozumiem tego...

tsdarky
  1. $dzis = date("Y-m-d");
  2. $zapytanie = mysql_query ("Select * FROM tabela WHERE kiedy < '$dzis' ");
  3. $ilosc = mysql_num_rows($zapytanie);

..WHERE kiedy < '$dzis'..

Nie mozna sprawdzac warunku czy 'stara' data(kiedy) jest mniejsza od nowej daty($dzis) jesli w zapytaniu do bazy dales = smile.gif
kosma
Problem w tym że w zapytaniu do bazy dałem kolejno wszystkie 3 kombinacje, a wyniki jak wyżej
nospor
no bo nie: 'kiedy'
a: kiedy
przeciez KIEDY to pole a nie tekst...
kosma
Nospor jak zwykle masz rację ale ja już się pogubiłem, a próbowałem też bez apostrofów i choć warunek mniejszości i większości spełnia prawidłowo to jednak równości nie, jak więc mam sprawdzić równość, tj kiedy wartość komórki kiedy równa jest dzisiejszej dacie?
nospor
no ale skoro KIEDY zawiera tez czas, to przed porownaniem jest z dzisiejszą datą musisz ją sformatowac tak by wywalic czas.
Tu masz wszystko opisane:
http://dev.mysql.com/doc/refman/5.1/en/dat...-functions.html
kosma
No i tego się obawiałem...naczytałem się jednak że DATATIME to takie wygodne w porównywaniu dat w tym samym formacie, że myślałem iż ta wygoda sięga i porównywania samej daty z pominięciem czasu, a tu nici. Głupi jestem w swej naiwności wstydnis.gif
Prościej chyba będzie dodać kolejną kolumnę z samą datą i choć dublować się będzie DATA i DATATIME to czy nie jest to najlepsze rozwiązanie?
nospor
no zesz....
a gdzie widzisz problem by sformatowac te date do Y-m-d ?No przeciez podalem ci linka tam masz opisane jak trza
kosma
no żesz...
dla mnie to jednak problem...
czytania na cały dzień, a że angielskiego nie znam to i tak na chybił trafił co z tego zrozumiem tongue.gif

Edit

tj myslę że będę musiał wykonać kolejne zapytanie do bazy, a prościej chyba dodać kolumnę z DATE
pablo89pl
a cos w stylu
  1. SELECT * FROM tabela WHERE DATE_FORMAT( DATA, '%Y-%m-%d' ) < '2009-09-07'
kosma
Pablo89pl stokrotne dzięki!!!
  1. WHERE DATE_FORMAT( kiedy, '%Y-%m-%d' ) = '$dzis'
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.