Как я могу получить результаты MySQL сегодняшней даты?

0

Я пытаюсь извлечь результаты из таблицы, которая была вставлена ​​сегодня. Каждая вставка отмечена меткой времени.

Если я делаю запрос вроде:

SELECT * 
  FROM table 
  WHERE added > DATE_SUB(NOW(), INTERVAL 1 DAY) 

Кажется, я получаю материал, который выпал на сегодняшний день, но также и материал с 24 часов назад. возможно, я вижу вещи.

Я не хочу видеть вещи с 24 часов назад...

Теги:

4 ответа

4
Лучший ответ

Вы можете извлечь часть даты поля timestamp и сравнить его с текущая дата.

SELECT x,y,z FROM t WHERE Date(added)=Curdate()
3

"интервал 1 день" не означает "тот же календарный день", это означает "в течение 24 часов". Есть много ситуаций, когда это полезно. Например, вы можете сказать, покажите мне все ответы на мои сообщения, сделанные за последние 24 часа. Если бы я запустил такой запрос, когда утром приеду на работу, он скажет мне все ответы, которые появились, когда я спросил вчера утром, плюс те, которые пришли сегодня утром, прежде чем я приехал. Вероятно, это будет то, что я хочу знать.

По-видимому, это не полезно в вашем случае, поэтому... используйте что-то еще! Как и другие плакаты, предложили.

2

вы можете использовать трюк, что mysql сравнивает дату как находящуюся в полночь по сравнению со значением datetime:

SELECT * FROM table WHERE added >= CURRENT_DATE

это имеет то преимущество, что он может использовать индекс.

  • 0
    > = было бы лучше, не так ли?
  • 0
    вы правы. это опечатка. Спасибо!
1

Я склонен использовать TO_DAYS(), чтобы превратить времена в число дней, например.

SELECT * 
  FROM table 
  WHERE TO_DAYS(added)=TO_DAYS(NOW())

Ещё вопросы

Сообщество Overcoder
Наверх
Меню