MySQL Выберите строки, где столбец отметки времени между сейчас и 10 минут назад - PullRequest
7 голосов
/ 14 августа 2010

У меня есть столбец отметки времени, который автоматически обновляется при вставке / обновлении.

Я хочу получить строки, которые были обновлены за последние 10 минут.

SELECT
     *
FROM
     status
WHERE
     code='myCode'
AND
     'stamp_updated' 
     BETWEEN
     NOW()
     AND
     DATE_ADD(NOW() , INTERVAL - 10 MINUTE)
ORDER BY 
     stamp_updated DESC
LIMIT 1

Ответы [ 3 ]

22 голосов
/ 14 августа 2010

Использование:

  SELECT *
    FROM status
   WHERE code = 'myCode'
     AND `stamp_updated` BETWEEN DATE_SUB(NOW() , INTERVAL 10 MINUTE)
                           AND NOW()
ORDER BY stamp_updated DESC
   LIMIT 1

Порядок в операторе МЕЖДУ имеет значение - он был задом наперед.

7 голосов
/ 14 августа 2010
 ... 'stamp_updated' BETWEEN NOW() - INTERVAL 10 MINUTE AND NOW()  ...
3 голосов
/ 14 января 2015

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

select * 
  from status 
  where code='myCode' 
        and stamp_updated >= DATE_SUB(NOW(), INTERVAL 10 MINUTE) 
  order by stamp_updated desc 
  limit 1;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...