Выборка строк добавлена ​​в последний час - PullRequest
44 голосов
/ 10 сентября 2010

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

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

Может ли кто-нибудь мне помочь?

Ответы [ 6 ]

120 голосов
/ 10 сентября 2010

Используйте функции DATE_SUB () и Now ():

select count(*) as cnt
from  log
where date >= DATE_SUB(NOW(),INTERVAL 1 HOUR); 

Надеюсь, это поможет вам:)

4 голосов
/ 08 июня 2018

Если вы хотите реализовать это в 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')
3 голосов
/ 10 сентября 2010

Я рекомендую иметь один столбец даты и времени вместо столбцов даты и времени.

Предположим, у вас есть столбец даты и времени с именем last_login:

SELECT id, ip_address, last_login
FROM mytable
WHERE last_login >= DATE_SUB(NOW(), interval 1 hour);
1 голос
/ 02 августа 2016

Вы также можете использовать функцию CURDATE ()

SELECT
    count(*) AS TotalCount
FROM
    tblName
WHERE
    datetime >= DATE_SUB(CURDATE(), INTERVAL 1 HOUR)
1 голос
/ 22 декабря 2013

это можно легко сделать с помощью

select count(*) from logins where datetime>= NOW()- INTERVAL 1 HOUR
0 голосов
/ 10 сентября 2010

без специфики, я думаю, Date_Add () будет работать .. добавив к вашему предложению where добавление NOW отрицательных часов

(или Date_Sub ())

...