Я хочу получить все данные с сегодняшней даты (или больше, чем сегодняшняя дата). Но он показывает всю дату до и после сегодняшней даты.
См. изображения ниже:
Мой запрос на выборку:
SELECT * FROM tbl_reservation_info WHERE ri_id !='' AND status = 'Success' AND ri_arrival_date > '08-Apr-2019'
Если для вашего столбца установлено значение VARCHAR, то вы, вероятно, сравниваете строки, а не дату. Пожалуйста, преобразуйте столбец в тип даты в MySQL, если это не так.
Ваш столбец не относится к типу DATE. Вам нужно отформатировать его как дату, чтобы сравнение работало.
Ваши даты имеют недопустимый формат даты MySQL (столбец предположительно представляет собой VARCHAR
или аналогичный) и сравниваются как строки. Поскольку все ваши даты начинаются с 1
, 2
или 3
, все они больше, чем (с использованием сравнения строк) строка даты, начинающаяся с 0
. Вам нужно преобразовать форматы для правильного сравнения:
SELECT *
FROM tbl_reservation_info
WHERE ri_id !=''
AND status = 'Success'
AND STR_TO_DATE(ri_arrival_date, '%d-%b-%Y') > STR_TO_DATE('08-Apr-2019', '%d-%b-%Y')
понял, и спасибо @nick, все работает правильно. На самом деле, мой тип поля даты varchar
@Саббир рад, что смог помочь.
Обычно дата сохраняется в следующем формате: ГГГГ-ММ-ДД. Возможно, ваш php-myadmin отформатировал его таким образом или
вы должны изменить его с varchar/text на дату, иначе сортировка и фильтрация будут сложными. Также ваш код должен использовать этот формат - для отображения вам нужно его преобразовать.
На вашем скриншоте 12 больше, чем 8, которые вы фильтруете.
12 марта 2019 > 8*
https://dev.mysql.com/doc/refman/8.0/en/дата-и-время-тип-обзор.html
Попробуйте это: SELECT * FROM tbl_reservation_info WHERE ri_id !='' AND status = 'Success' AND DATE(ri_arrival_date) >= DATE('08-Apr-2019')