MySQL ИНТЕРВАЛ Минс - PullRequest
       7

MySQL ИНТЕРВАЛ Минс

7 голосов
/ 04 августа 2010

Я пытаюсь получить все записи, которые старше 2 часов, используя этот запрос:

$minutes = 60 * 2

SELECT COUNT(id) AS TOTAL, job_id 
  from tlb_stats 
 WHERE log_time >= DATE_SUB(CURRENT_DATE, INTERVAL $minutes MINUTE) 
GROUP BY job_id

Он выбирает только последние записи и пропускает старые.Когда я меняю log_time <= ..., он выбирает только старые и пропускает новые.

Что я делаю не так?

Ответы [ 3 ]

18 голосов
/ 04 августа 2010

Попробуйте:

$minutes = 60 * 2

SELECT COUNT(`id`) AS `TOTAL`, `job_id` 
  FROM `tlb_stats` 
  WHERE `log_time` < DATE_SUB(NOW(), INTERVAL $minutes MINUTE) 
  GROUP BY `job_id`
  • использование обратных кавычек для цитирования полей (такие слова, как "total" и "id" могут когда-нибудь означать что-то в MySQL)
  • использовать NOW() для CURRENT_DATE означает просто 2010-08-04, не включая время
  • используйте <, чтобы получить записи старше , чем эта дата.
1 голос
/ 07 марта 2015
SELECT * FROM `table_name` WHERE CURTIME() >= (`colname` + INTERVAL 120 MINUTE)

Здесь colname - это столбец, в который вы добавили метку времени в момент создания записи.

0 голосов
/ 25 апреля 2019

Вы также можете сделать это следующим образом:

$minutes = 60 * 2

SELECT COUNT(`id`) AS `TOTAL`,
       `job_id` 
FROM `tlb_stats` 
WHERE `log_time` < NOW() - INTERVAL $minutes MINUTE
GROUP BY `job_id`
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...