Saltar al contenido

¿Cómo comparar las fechas de la marca de tiempo con el parámetro de solo fecha en MySQL?

Solución:

Puedes usar el DATE() función para extraer la parte de la fecha de la marca de tiempo:

SELECT * FROM table
WHERE DATE(timestamp) = '2012-05-25'

Sin embargo, si tiene un índice en la columna de marca de tiempo, esto sería más rápido porque podría utilizar un índice en la columna de marca de tiempo si tiene uno:

SELECT * FROM table
WHERE timestamp BETWEEN '2012-05-25 00:00:00' AND '2012-05-25 23:59:59'

 WHERE cast(timestamp as date) = '2012-05-05'

Como sugirieron algunos, usando DATE(timestamp) está aplicando manipulación a la columna y, por lo tanto, no puede confiar en el orden del índice.

Sin embargo, usando BETWEEN solo sería confiable si incluye los milisegundos. En la marca de tiempo del ejemplo BETWEEN '2012-05-05 00:00:00' AND '2012-05-05 23:59:59' excluye registros con una marca de tiempo entre 2012-05-05 23:59:59.001 y 2012-05-05 23:59:59.999. Sin embargo, incluso este método tiene algunos problemas debido a la precisión de los tipos de datos. Ocasionalmente, se redondean 999 milisegundos.

Lo mejor que puedes hacer es:

SELECT * FROM table
WHERE date>='2012-05-05' AND date<'2012-05-06'
¡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 *