Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MySQL]Porównanie dat, DATATIME i aktualna data
kosma
post
Post #1





Grupa: Zarejestrowani
Postów: 44
Pomógł: 0
Dołączył: 11.11.2007

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


  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...



Ten post edytował kosma 7.09.2009, 02:49:47
Go to the top of the page
+Quote Post
tsdarky
post
Post #2





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 5.08.2009

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


  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 = (IMG:style_emoticons/default/smile.gif)

Ten post edytował tsdarky 7.09.2009, 04:48:58
Go to the top of the page
+Quote Post
kosma
post
Post #3





Grupa: Zarejestrowani
Postów: 44
Pomógł: 0
Dołączył: 11.11.2007

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


Problem w tym że w zapytaniu do bazy dałem kolejno wszystkie 3 kombinacje, a wyniki jak wyżej
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




no bo nie: 'kiedy'
a: kiedy
przeciez KIEDY to pole a nie tekst...
Go to the top of the page
+Quote Post
kosma
post
Post #5





Grupa: Zarejestrowani
Postów: 44
Pomógł: 0
Dołączył: 11.11.2007

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


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?
Go to the top of the page
+Quote Post
nospor
post
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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
Go to the top of the page
+Quote Post
kosma
post
Post #7





Grupa: Zarejestrowani
Postów: 44
Pomógł: 0
Dołączył: 11.11.2007

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


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 (IMG:style_emoticons/default/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?
Go to the top of the page
+Quote Post
nospor
post
Post #8





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




no zesz....
a gdzie widzisz problem by sformatowac te date do Y-m-d ?No przeciez podalem ci linka tam masz opisane jak trza
Go to the top of the page
+Quote Post
kosma
post
Post #9





Grupa: Zarejestrowani
Postów: 44
Pomógł: 0
Dołączył: 11.11.2007

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


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 (IMG:style_emoticons/default/tongue.gif)

Edit

tj myslę że będę musiał wykonać kolejne zapytanie do bazy, a prościej chyba dodać kolumnę z DATE

Ten post edytował kosma 7.09.2009, 13:47:12
Go to the top of the page
+Quote Post
pablo89pl
post
Post #10





Grupa: Zarejestrowani
Postów: 143
Pomógł: 19
Dołączył: 7.09.2009
Skąd: Rzeszów

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


a cos w stylu
  1. SELECT * FROM tabela WHERE DATE_FORMAT( DATA, '%Y-%m-%d' ) < '2009-09-07'


Ten post edytował pablo89pl 7.09.2009, 13:53:33
Go to the top of the page
+Quote Post
kosma
post
Post #11





Grupa: Zarejestrowani
Postów: 44
Pomógł: 0
Dołączył: 11.11.2007

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


Pablo89pl stokrotne dzięki!!!
  1. WHERE DATE_FORMAT( kiedy, '%Y-%m-%d' ) = '$dzis'
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 30.08.2025 - 07:31