Будь осторожен с между ними, так как оба minи maxзначения считаются в диапазоне, чтобы не обрабатывать дважды дата , которая является либо minи maxзначение (крайний случай). Например, дата 2010-09-29 00:00:00будет между 2010-09-28 00:00:00и2010-09-29 00:00:00 , А ТАКЖЕ между 2010-09-29 00:00:00и2010-09-30 00:00:00
minipif
да, что он сказал ^^
Альберт Раннецпергер
Ответы:
472
Ваше второе свидание предшествует вашему первому свиданию (т.е. вы запрашиваете в период с 29 сентября 2010 года по 30 января 2010 года). Попробуйте поменять порядок дат:
Вы можете добавить объяснение, чтобы люди поняли, что вы делаете.
Франц Глайхманн
7
В качестве дополнения к ответу от @sabin и подсказки, если кто-то хочет сравнить только часть даты (без времени):
Если поле для сравнения относится к типу datetime и для сравнения указываются только даты , эти даты внутренне преобразуются в значения datetime . Это означает, что следующий запрос
Может быть проблема с настройкой даты на стороне сервера или на стороне клиента. Я обнаружил, что это является распространенной проблемой в нескольких базах данных, когда хост настроен на испанском, французском или любом другом ..., что может повлиять на формат дд / мм / гггг или мм / дд / гггг.
min
иmax
значения считаются в диапазоне, чтобы не обрабатывать дважды дата , которая является либоmin
иmax
значение (крайний случай). Например, дата2010-09-29 00:00:00
будет между2010-09-28 00:00:00
и2010-09-29 00:00:00
, А ТАКЖЕ между2010-09-29 00:00:00
и2010-09-30 00:00:00
Ответы:
Ваше второе свидание предшествует вашему первому свиданию (т.е. вы запрашиваете в период с 29 сентября 2010 года по 30 января 2010 года). Попробуйте поменять порядок дат:
источник
where
предложение должно работать одинаково для операторовselect
илиupdate
.Ваш запрос должен иметь дату как
пытаться
источник
Имеет
date_field
типdatetime
? Также вам нужно поставить дату более раннего.Так должно быть:
источник
DATE () - это функция MySQL, которая извлекает только часть даты из выражения даты или даты / времени
источник
В качестве дополнения к ответу от @sabin и подсказки, если кто-то хочет сравнить только часть даты (без времени):
Если поле для сравнения относится к типу datetime и для сравнения указываются только даты , эти даты внутренне преобразуются в значения datetime . Это означает, что следующий запрос
будет преобразован в
внутренне.
Это, в свою очередь, приводит к результату, который не включает объекты 2010-09-29 со значением времени больше 00:00:00!
Таким образом, если все объекты с датой 2010-09-29 также должны быть включены, поле для сравнения должно быть преобразовано в дату:
источник
Вы можете сделать это вручную, сравнивая с большим или равным и меньшим или равным.
В нашем примере нам нужно получить данные за определенный день. Мы будем сравнивать с начала дня до последней секунды в другой день.
источник
При использовании значений даты и времени вы должны приводить поля как,
DateTime
а не какDate
. Пытаться :источник
Может быть проблема с настройкой даты на стороне сервера или на стороне клиента. Я обнаружил, что это является распространенной проблемой в нескольких базах данных, когда хост настроен на испанском, французском или любом другом ..., что может повлиять на формат дд / мм / гггг или мм / дд / гггг.
источник
Просто приведите date_field в качестве даты
источник
Попробуйте поменять даты:
источник