Comparación de fechas de MySQL con DATE_FORMAT()
En este artículo, exploraremos cómo realizar comparaciones de fechas en MySQL usando DATE_FORMAT() función, que aborda un problema específico que enfrenta un usuario al comparar fechas.
El problema
El usuario enfrentó un desafío al comparar fechas usando DATE_FORMAT(). Las fechas se almacenaron en el siguiente formato: '%d-%m-%Y', que no es un formato fácil de ordenar. Utilizando la siguiente consulta, el usuario intentó comparar las fechas:
SELECT DATE_FORMAT(DATE(starttime), '%d-%m-%Y')
FROM data
WHERE DATE_FORMAT(DATE(starttime), '%d-%m-%Y') >= '02-11-2012';
Sin embargo, el resultado incluyó '28-10-2012', que fue incorrecto según las expectativas del usuario.
La solución
El problema surge porque estamos comparando cadenas en lugar de fechas. DATE_FORMAT() convierte una fecha en una cadena y las cadenas se comparan lexicográficamente. En este caso, '28-10-2012' es mayor que '02-11-2012' lexicográficamente, aunque '02-11-2012' es una fecha posterior.
Para comparar fechas con precisión, necesitamos para compararlos como fechas, no como cadenas. Podemos usar la función DATE() para extraer el componente de fecha del campo de hora de inicio y luego comparar las fechas usando el operador >=, como se muestra en la siguiente consulta:
SELECT DATE_FORMAT(DATE(starttime), '%d-%m-%Y')
FROM data
WHERE DATE(starttime) >= DATE('2012-11-02');
Esta consulta comparará correctamente las fechas y excluirá '28-10-2012' del resultado.
Consideración adicional
Vale la pena considerar si la hora de inicio del campo DATETIME se puede cambiar a un campo DATE. Esto eliminaría la necesidad de realizar conversiones repetidas, lo que podría mejorar el rendimiento.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3