Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Porównanie dat
Forum PHP.pl > Forum > Przedszkole
d.stp
Mam prosty skrypt wizyt na stronie. Chciałbym pobrać z bazy wszystkie wizyty od dnia np. 2014-12-15 do dnia 2014-12-21. Problem mam z warunkiem ^^

W bazie date wizyt trzymam jako DATETIME.

Próbowałem:

  1. visit_date >= '2014-12-15' AND visit_date <= '2014-12-21'


Ale coś jest nie tak. Nie pokazuje mi żadnych wizyt chociaż one są w tym przedziale. Co jest nie tak?
Pyton_000
DATE(visit_date)
d.stp
Nie trybi. Dalej pokazuje 0

visit_date >= 'DATE(2014-12-15)' AND visit_date <= 'DATE(2014-12-22)'

Próbowałem też bez apostrofów
Rysh
Spróbuj z BETWEEN (http://dev.mysql.com/doc/refman/5.0/en/comparison-operators.html#operator_between)
d.stp
hmm.. dałem to w nawias:

(visit_date >= 'DATE(2014-12-15)' OR visit_date <= 'DATE(2014-12-22)')

i chyba działa. Logicznie jest ok?
viking
Logicznie jest between z adnotacją jaką znajdziesz poniżej w dokumentacji.
d.stp
Tylko że nie działa ;(

BETWEEN DATE('2014-12-15') AND DATE('2014-12-22')
viking
Cytat
For best results when using BETWEEN with date or time values, use CAST() to explicitly convert the values to the desired data type. Examples: If you compare a DATETIME to two DATE values, convert the DATE values to DATETIME values. If you use a string constant such as '2001-1-1' in a comparison to a DATE, cast the string to a DATE.
d.stp
nie znam angielskiego, kompletnie...
viking
https://translate.google.com

Jeżeli porównujesz DATETIME (czyli to co masz w bazie) do DATE (czyli input) masz ten DATE przekonwertować (funkcja CAST()) do DATETIME.
d.stp
Nie mam pojęcia co robię nie tak...

AND visit_date BETWEEN CAST('2014-12-21' as DATE) AND CAST('2014-12-21' as DATE)

pokazuje 0 chociaż są takie rekordy.

Jak dam zakres np. od 2014-12-15 do 2014-12-25 to działa.

W bazie tak zapisuje datę: 2014-12-21 11:38 - DATETIME
untorched
Nie da rady tak?
Kod
AND visit_date BETWEEN CAST('2014-12-21 00:00:00' as DATE) AND CAST('2014-12-21 23:59:59' as DATE)


Edit:
Może zamiast DATE to DATETIME ?
d.stp
eh.. zamiast CAST użyć na datę z bazy to ja dawałem na te daty wprowadzone... żal biggrin.gif
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.