Я пытаюсь извлечь результаты из таблицы, которая была вставлена сегодня. Каждая вставка отмечена меткой времени.
Если я делаю запрос вроде:
SELECT *
FROM table
WHERE added > DATE_SUB(NOW(), INTERVAL 1 DAY)
Кажется, я получаю материал, который выпал на сегодняшний день, но также и материал с 24 часов назад. возможно, я вижу вещи.
Я не хочу видеть вещи с 24 часов назад...
Вы можете извлечь часть даты поля timestamp и сравнить его с текущая дата.
SELECT x,y,z FROM t WHERE Date(added)=Curdate()
"интервал 1 день" не означает "тот же календарный день", это означает "в течение 24 часов". Есть много ситуаций, когда это полезно. Например, вы можете сказать, покажите мне все ответы на мои сообщения, сделанные за последние 24 часа. Если бы я запустил такой запрос, когда утром приеду на работу, он скажет мне все ответы, которые появились, когда я спросил вчера утром, плюс те, которые пришли сегодня утром, прежде чем я приехал. Вероятно, это будет то, что я хочу знать.
По-видимому, это не полезно в вашем случае, поэтому... используйте что-то еще! Как и другие плакаты, предложили.
вы можете использовать трюк, что mysql сравнивает дату как находящуюся в полночь по сравнению со значением datetime:
SELECT * FROM table WHERE added >= CURRENT_DATE
это имеет то преимущество, что он может использовать индекс.
Я склонен использовать TO_DAYS(), чтобы превратить времена в число дней, например.
SELECT *
FROM table
WHERE TO_DAYS(added)=TO_DAYS(NOW())