MySQL: выборка строк, добавленных в последний час



Я веду запись Логинов в таблице. У меня есть столбцы для id, ip, даты и времени. Из этой записи Логинов я хочу извлечь логины, сделанные только за последний час.



Я просматриваю документы MySQL по функциям времени и даты, но я просто не могу их правильно объединить.



Кто-нибудь может мне помочь?

562   6  

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

    Ничего не найдено.