web-dev-qa-db-fra.com

Récupération des lignes ajoutées la dernière heure

Je garde un enregistrement des connexions dans une table. J'ai des colonnes pour id, ip, date et heure. À partir de cet enregistrement des connexions, je veux récupérer les connexions effectuées uniquement au cours de la dernière heure.

Je passe en revue les documents MySQL sur les fonctions d'heure et de date, mais je n'arrive pas à les combiner correctement.

Quelqu'un peut-il m'aider?

44
Michael Grons

Utilisez les fonctions DATE_SUB () et Now ():

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

J'espère que cela vous aide:)

121
SDReyes

Si vous souhaitez implémenter cela dans un cronjob, vous devez spécifier le début et la fin.

Par exemple, à 14 h, si vous souhaitez obtenir les données de la dernière heure de 13h00 à 13 h 59 min 59 s, voici comment procéder:

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')
4
phoenix

Je recommande d'avoir une colonne datetime au lieu de colonnes de date et d'heure.

Supposons que vous ayez une colonne datetime appelée last_login:

SELECT id, ip_address, last_login
FROM mytable
WHERE last_login >= DATE_SUB(NOW(), interval 1 hour);
3
Paul Schreiber

cela peut être fait facilement en utilisant

select count(*) from logins where datetime>= NOW()- INTERVAL 1 HOUR
2
Varun Nath

Vous pouvez également utiliser la fonction CURDATE ()

SELECT
    count(*) AS TotalCount
FROM
    tblName
WHERE
    datetime >= DATE_SUB(CURDATE(), INTERVAL 1 HOUR)
1
Faisal

sans les détails, je pense que Date_Add () fonctionnerait .. en ajoutant à votre clause where un ajout de NOW heures négatives

(ou Date_Sub ())

0
DRapp