Saltar al contenido

Todos los registros de MySQL de ayer

Solución:

Como solo está buscando la parte de la fecha, puede compararlas fácilmente usando MySQL DATE() función.

SELECT * FROM table WHERE DATE(created_at) = DATE(NOW() - INTERVAL 1 DAY);

Tenga en cuenta que si tiene una gran cantidad de registros, esto puede resultar ineficaz; Las ventajas de indexación se pierden con el valor derivado de DATE(). En ese caso, puede utilizar esta consulta:

SELECT * FROM table
    WHERE created_at BETWEEN CURDATE() - INTERVAL 1 DAY
        AND CURDATE() - INTERVAL 1 SECOND;

Esto funciona porque los valores de fecha como el devuelto por CURDATE() se supone que tienen una marca de tiempo de 00:00:00. El índice aún se puede usar porque el valor de la columna de fecha no se está transformando en absoluto.

Aún puedes usar el índice si dices

SELECT * FROM TABLE
WHERE CREATED_AT >= CURDATE() - INTERVAL 1 DAY
  AND CREATED_AT < CURDATE();

Puedes usar subdate para indicar “ayer” y usar date() para indicar que desea registros en los que coincida solo la parte de la fecha de la columna. Entonces:

SELECT *
FROM tablename
WHERE DATE(created_at) = SUBDATE(CURRENT_DATE(), INTERVAL 1 DAY)
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *