Guardo un registro de inicios de sesión en una tabla. Tengo columnas para id, ip, fecha y hora. De ese registro de inicios de sesión quiero obtener inicios de sesión hechos solo en la última hora.
Estoy sudando a través de la documentación de MySQL sobre las funciones de fecha y hora, pero parece que no puedo combinarlas correctamente.
¿Puede alguien ayudarme?
Respuestas
92 para la respuesta № 1Utilice las funciones DATE_SUB () y Now ():
select count(*) as cnt
from log
where date >= DATE_SUB(NOW(),INTERVAL 1 HOUR);
Espero que te ayude:)
3 para la respuesta № 2
Recomiendo tener una columna de fecha y hora en lugar de columnas de fecha y hora.
Supongamos que tiene una columna de fecha y hora llamada last_login:
SELECT id, ip_address, last_login
FROM mytable
WHERE last_login >= DATE_SUB(NOW(), interval 1 hour);
1 para la respuesta № 3
Se puede hacer fácilmente usando
select count(*) from logins where datetime>= NOW()- INTERVAL 1 HOUR
1 para la respuesta № 4
Si desea implementar esto en un cronjob, necesita especificar el inicio y el final.
Por ejemplo, a las 2 p.m., si desea obtener los datos de la última hora de 13:00:00 a 13:59:59, aquí se explica cómo hacerlo:
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")
0 para la respuesta № 5
sin los detalles, creo que Date_Add () funcionaría ... agregando a su cláusula where un agregado de AHORA horas negativas
(o Date_Sub ())
0 para la respuesta № 6
También puedes usar la función CURDATE ()
SELECT
count(*) AS TotalCount
FROM
tblName
WHERE
datetime >= DATE_SUB(CURDATE(), INTERVAL 1 HOUR)