Выберите записи, которые на x дней старше текущей даты - PullRequest
0 голосов
/ 20 сентября 2018

Я пытаюсь выбрать записи, которые старше X дней, из таблицы MySQL «my_table» и столбца «Last_updated_time» в файле PHP.Я пробовал разные комбинации.Мой столбец «Время последнего обновления» имеет тип Varchar, а НЕ тип «Дата».

Мой оператор выбора выглядел примерно так:

$sql = "SELECT * FROM my_table WHERE  str_to_date(Last_updated_time, '%d/%m/%Y') < DATE_SUB(NOW(), INTERVAL  X DAY) AND Place='So_and_So'  ";

Я даже пробовал это:

$sql = "SELECT * FROM my_table WHERE (Last_updated_time < NOW() - INTERVAL X DAY) AND Place=' So_and_So' "; 

Я использую результат, чтобы отправить как JSON для анализа в моемФайл Android.

Пожалуйста, помогите мне.Я искал все так много.Спасибо.

1 Ответ

0 голосов
/ 21 сентября 2018

Это должно работать:

SELECT * 
FROM my_table 
WHERE STR_TO_DATE(Last_updated_time, '%m/%d/%Y') < CURDATE() - INTERVAL X DAYS
AND Place='So_and_So'

Вы уверены, что формат Last_updated_time - дд / мм / гггг?Если нет, вам следует изменить часть «% m /% d /% Y».

Извините за все правки, я продолжаю портить: P

Последнее редактирование:

Вам следует подумать об изменении поля Last_updated_time на тип даты.Вы можете создать временный столбец и обновить всю таблицу примерно так:

UPDATE my_table 
SET `temp_updated_time` = STR_TO_DATE(Last_updated_time, '%m/%d/%Y')

После этого вы можете удалить старый столбец и переименовать новый столбец в старое имя столбца.Это должно значительно ускорить поиск, потому что str_to_date довольно медленный.Конечно, вы также должны изменить свой код, если это необходимо.Всегда выбирайте быстрое / постоянное решение, если можете!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...