У меня есть этот запрос, который ищет результаты из базы данных за последние двадцать минут, теперь я знаю, как искать в часах, днях и т. Д., Но можно ли искать только в полночь того дня. поэтому когда запрос выполняется, и что когда-либо он только оглядывается до полуночи?
SELECT * FROM ip_stats WHERE date >= ( NOW() - INTERVAL 20 MINUTE ) and ip='$ip'
Это мой код, но есть место, в котором я могу заменить интервал на определенное время.
Любая помощь будет оценена по достоинству.
Оглядываясь назад на полночь текущего дня, это то же самое, что смотреть на текущую дату без компонента времени. Поэтому вы можете использовать DATE()
для усечения даты столбца date
только для части даты и сравнить ее с CURDATE()
.
SELECT * FROM ip_stats WHERE DATE(date) = CURDATE() and ip='$ip'
SELECT * FROM ip_stats WHERE date >= ( NOW() - INTERVAL 20 MINUTE ) AND date >= CURDATE() and ip='$ip'
Просто сделайте date
столбца больше, чем curdate
(это начало этого дня).
SELECT * FROM ip_stats WHERE date >= ( NOW() - INTERVAL 20 MINUTE ) and date > CURDATE() and ip='$ip'
Вы можете использовать CURDATE()
для получения строк с полуночи текущего дня:
SELECT * FROM ip_stats WHERE date >= CURDATE() and ip='$ip'
SELECT * FROM ip_stats WHERE date >= GREATEST( NOW() - INTERVAL 20 MINUTE, CURRENT_DATE ) AND ip = '$ip'