59 votes

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

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 parcoure 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?

164voto

SDReyes Points 3989

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 ça t'aidera :)

11voto

phoenix Points 722

Si vous souhaitez implémenter cela dans une tâche cron, vous devez spécifier le début et la fin.

Par exemple, à 14h00, si vous souhaitez obtenir les données de l'heure passée de 13h00 à 13h59 :59, 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')

6voto

nathvarun Points 1301

cela peut être fait facilement en utilisant

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

4voto

Paul Schreiber Points 7214

Je recommande d'avoir une colonne datetime au lieu de colonnes date et 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);

1voto

Faisal Points 2586

Vous pouvez également utiliser la fonction CURDATE()

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X