/ / MySQL: recuperando filas agregadas la última hora - mysql, datetime

MySQL: Recuperando filas agregadas la última hora - mysql, datetime

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 № 1

Utilice 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)