Należy zachować ostrożność przy OD, ponieważ oba mini maxwartości uznaje się w zakresie i nie przetwarza dwa razy datę, albo mini maxwartość (przypadek kant). Na przykład, termin 2010-09-29 00:00:00będzie między 2010-09-28 00:00:00i2010-09-29 00:00:00 , I RÓWNIEŻ pomiędzy 2010-09-29 00:00:00i2010-09-30 00:00:00
minipif
tak, co powiedział ^^
Albert Rannetsperger
Odpowiedzi:
471
Druga data przypada przed pierwszą datą (tzn. Zapytania odbywają się między 29 września 2010 a 30 stycznia 2010). Spróbuj odwrócić kolejność dat:
Państwo mogłoby dodać wyjaśnienie tak ludzie zrozumieją, co robisz.
Franz Gleichmann
6
Jako rozszerzenie odpowiedzi @sabin i podpowiedź, jeśli chce się porównać tylko część daty (bez czasu):
Jeśli pole do porównania pochodzi z typu datetime i dla porównania określono tylko daty , daty te są wewnętrznie konwertowane na wartości datetime . Oznacza to, że następujące zapytanie
Może to być problem z konfiguracją daty po stronie serwera lub po stronie klienta. Odkryłem, że jest to częsty problem w wielu bazach danych, gdy host jest skonfigurowany w języku hiszpańskim, francuskim lub czymkolwiek innym ... co może mieć wpływ na format dd / mm / rrrr lub mm / dd / rrrr.
min
imax
wartości uznaje się w zakresie i nie przetwarza dwa razy datę, albomin
imax
wartość (przypadek kant). Na przykład, termin2010-09-29 00:00:00
będzie między2010-09-28 00:00:00
i2010-09-29 00:00:00
, I RÓWNIEŻ pomiędzy2010-09-29 00:00:00
i2010-09-30 00:00:00
Odpowiedzi:
Druga data przypada przed pierwszą datą (tzn. Zapytania odbywają się między 29 września 2010 a 30 stycznia 2010). Spróbuj odwrócić kolejność dat:
źródło
where
klauzula powinna działać tak samo naselect
lubupdate
oświadczenia.Twoje zapytanie powinno mieć datę jak
próbować
źródło
Jest
date_field
typudatetime
? Musisz także ustawić datę wkładki usznej na pierwszym miejscu.Powinno być:
źródło
DATE () to funkcja MySQL, która wyodrębnia tylko część daty wyrażenia daty lub daty / godziny
źródło
Jako rozszerzenie odpowiedzi @sabin i podpowiedź, jeśli chce się porównać tylko część daty (bez czasu):
Jeśli pole do porównania pochodzi z typu datetime i dla porównania określono tylko daty , daty te są wewnętrznie konwertowane na wartości datetime . Oznacza to, że następujące zapytanie
zostanie przekonwertowany na
wewnętrznie.
To z kolei prowadzi do wyniku, który nie obejmuje obiektów z 29.09.2010 r. O wartości czasu większej niż 00:00:00!
Dlatego też, jeśli wszystkie obiekty z datą 2010-09-29 powinny zostać uwzględnione, pole do porównania musi zostać przekonwertowane na datę:
źródło
Możesz to zrobić ręcznie, porównując wartości większe lub równe i mniejsze lub równe.
W naszym przykładzie musimy pobierać dane z określonego dnia. Porównamy od początku dnia do ostatniej sekundy innego dnia.
źródło
Może to być problem z konfiguracją daty po stronie serwera lub po stronie klienta. Odkryłem, że jest to częsty problem w wielu bazach danych, gdy host jest skonfigurowany w języku hiszpańskim, francuskim lub czymkolwiek innym ... co może mieć wpływ na format dd / mm / rrrr lub mm / dd / rrrr.
źródło
Po prostu użyj date_field jako date
źródło
Korzystając z wartości daty i godziny, musisz rzutować pola jako
DateTime
i nieDate
. Próbować :źródło
Spróbuj zmienić daty:
źródło