Comparación de fechas MySQL con date_format
A pesar de intentar múltiples métodos de comparación de fechas, un usuario encontró un resultado inesperado. Intentaron comparar fechas formateadas como '%d-%m-%Y' pero incluyeron un registro erróneo en el conjunto de resultados.
El problema surge al comparar cadenas en lugar de fechas. La función date_format convierte fechas en cadenas, lo que hace que la comparación sea susceptible al orden lexicográfico. Por ejemplo, '28-10-2012' es alfabéticamente mayor que '02-11-2012', de ahí su inclusión en el conjunto de resultados a pesar de ser cronológicamente anterior.
Para resolver esto, la comparación debe realizarse en fechas en lugar de cadenas. La función de fecha se puede utilizar para extraer el componente de fecha de un campo DATETIME o DATE. Al comparar las fechas extraídas, se garantiza el orden cronológico.
Por ejemplo:
select date_format(date(starttime),'%d-%m-%Y') from data
where date(starttime) >= date '2012-11-02';
En esta consulta, fecha(hora de inicio) extrae la fecha del campo hora de inicio, que luego se compara con la fecha especificada en AAAA-MM -Formato DD. La función date_format se usa solo para formatear el resultado.
Si la hora de inicio es un campo DATETIME, considere usar:
select date_format(date(starttime),'%d-%m-%Y') from data
where starttime >= '2012-11-02 00:00:00';
Esta consulta evita la conversión de fecha repetida ya que la comparación se realiza directamente en el campo DATETIME.
Recuerde, la ISO El estándar -8601 recomienda usar 'AAAA-MM-DD' como formato de fecha, pero el código proporcionado se adhiere al formato '%d-%m-%Y' especificado por el usuario.
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