MySQL: выборка строк, добавленных в последний час
Я веду запись Логинов в таблице. У меня есть столбцы для id, ip, даты и времени. Из этой записи Логинов я хочу извлечь логины, сделанные только за последний час.
Я просматриваю документы MySQL по функциям времени и даты, но я просто не могу их правильно объединить.
Кто-нибудь может мне помочь?
6 ответов:
Используйте функции DATE_SUB () и Now ():
select count(*) as cnt from log where date >= DATE_SUB(NOW(),INTERVAL 1 HOUR);Надеюсь, это поможет вам:)
Я рекомендую иметь один столбец datetime вместо столбцов даты и времени.
Предположим, что у вас есть столбец datetime с именем last_login:
SELECT id, ip_address, last_login FROM mytable WHERE last_login >= DATE_SUB(NOW(), interval 1 hour);
Если вы хотите реализовать это в cronjob, вам нужно указать начало и конец.
Например, в 2 часа дня, если вы хотите получить данные за прошедший час с 13: 00:00 до 13: 59: 59, вот как это сделать:
dateField BETWEEN DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 1 HOUR), '%Y-%m-%d %H:00:00') AND DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 1 HOUR), '%Y-%m-%d %H:59:59')
Это можно легко сделать, используя
select count(*) from logins where datetime>= NOW()- INTERVAL 1 HOUR
Вы также можете использовать функцию CURDATE ()
SELECT count(*) AS TotalCount FROM tblName WHERE datetime >= DATE_SUB(CURDATE(), INTERVAL 1 HOUR)
Без конкретики, я думаю, Date_Add () будет работать.. путем добавления предложения where добавлением негативный часов
(или Date_Sub ())
Comments