Я работаю над созданием информационной панели для оценки эргономики и пытаюсь разместить одну из своих карточек на информационной панели, чтобы показать, сколько тикетов в настоящее время старше 30 дней. Прямо сейчас это не дает никаких результатов в течение 30 дней, хотя я настроил два билета, чтобы они были старше.
<?php echo $db->mysqli_result(dbQuery("SELECT COUNT(*) FROM tickets WHERE DATE(date_opened) > DATE(NOW()) - INTERVAL 30 DAY")); ?>
Я могу использовать запрос неправильно, но это то, что я видел, глядя на другие примеры людей, пытающихся достичь аналогичного эффекта.
похоже, у вас все хорошо... вы пытались запустить запрос на SQL напрямую? если да, то в чем ошибка? или у вас там пустые записи
@forpas - я пробовал это, и это не дало никаких результатов
@SayedMohdAli да, это правильно.
Тогда у вас нет строк старше 30 дней.
Вы были бы правы, кто-то из команды проекта обновил даты. Спасибо за помощь.






Вы хотите использовать DATE_SUB():
> DATE_SUB(NOW(), INTERVAL 60 DAY)
Полный запрос:
SELECT COUNT(*) FROM tickets WHERE DATE(date_opened) > DATE_SUB(NOW(), INTERVAL 30 DAY);
Я проверил это, и ваш запрос возвращает 0 строк, в то время как DATE_SUB возвращает правильное значение.
Это подсчет билетов, но он подсчитывает все мои билеты.
Тогда у вас есть проблема с данными с вашими значениями date_opened. Не стесняйтесь предоставлять схему и несколько строк данных, и мы можем предоставить дополнительную помощь.
Я бы порекомендовал:
WHERE date_opened < CURDATE() - INTERVAL 30 DAY
------------------^ note less than
Я рекомендую избегать использования DATE(date_opened), потому что это предотвращает использование индекса.
DATE(date_opened) < DATE(NOW()) - INTERVAL 30 DAY