#mysql
#mysql
Вопрос:
У меня есть база данных, которая хранит дату для каждой записи в формате DATETIME. Мне нужно извлекать только те результаты, которые больше, чем вчера. Я говорю вчера, потому что мне нужны результаты за текущий день и вперед.
В настоящее время у меня есть следующее.
$yest = mktime(0, 0, 0, date("m"), date("d")-1, date("Y"));
$yest_date = date('n-j-o', $yest);
SELECT * FROM TBL_NAME WHERE DATE_FORMAT(event_date, "%c-%d-%Y") > '".$yest_date."'
Это не дает никаких результатов, хотя я знаю, что есть события. Мы были бы очень признательны за любую помощь.
Ответ №1:
SELECT * FROM tbl_name WHERE event_date > DATE_SUB(NOW(), INTERVAL 1 DAY)
Комментарии:
1. Это не сработает, поскольку не удаляет временную часть. Вчерашний день с большой вероятностью начинается с
00:00:00
, а не сNOW() - 1
Ответ №2:
WHERE event_date > date(now()) - 1
Ответ №3:
Select * from tbl_name WHERE event_date > DATE_SUB(curdate(), INTERVAL 1 DAY)
Это должно начинаться со вчерашнего дня, а не через 24 часа после запуска запроса.
Если вы запускаете это в cron, вам, вероятно, следует сверить часовой пояс базы данных с сервером, чтобы вы не запускали его два дня назад, намереваясь запустить в 12: 01, но фактически запустив в 11: 01 из-за различий.
Ответ №4:
SELECT * FROM TBL_NAME WHERE event_date >= CURDATE()
Ответ №5:
SELECT * FROM tbl_name WHERE field_date > now()- interval 1 day;
Ответ №6:
что этот делает, так это выбирает значения с первой минуты сегодня до последней минуты сегодня.
WHERE scheduled_start_timestamp >= date() AND scheduled_start_timestamp <= date() 1