es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

MySQL está devolviendo registros de fechas anteriores en lugar de la fecha mencionada en la condición WHERE.

Objetivo: Obtener registros para una fecha determinada.
Problema:
La fecha de MySQL funciona de manera extraña. Devuelve registros para la fecha anterior en lugar de la fecha mencionada en la condición.

He intentado DATE(), CAST(transactiondate AS DATE) y DATEFORMAT() también.
Todos devuelven el mismo resultado.

Por ejemplo:

SELECT
transaction_date,
DATE(transaction_date)
FROM table
WHERE DATE(transaction_date)='2021-11-19'

devuelve el siguiente resultado:

[{
"transaction_date":"2021-11-18T18:30:00.000Z",
"DATE(transaction_date)":"2021-11-18T18:30:00.000Z"
}]

transaction_date tiene el tipo de datos DATE

Esto sucede para todas las fechas en la base de datos de producción. Sin embargo, funciona correctamente en la base de datos de prueba.

He intentado todo lo que sé. ¿Alguien puede ayudar a identificar la causa raíz del problema y guiar hacia la solución?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Solución

    Parece ser un problema de zona horaria en el que la fecha de transacción se almacena en una zona horaria diferente a la zona horaria predeterminada del servidor. Puede intentar establecer la zona horaria en la consulta a la zona horaria en la que se almacena la fecha de transacción.

    Por ejemplo:

    SELECT 
             transaction_date, 
             DATE(CONVERT_TZ(transaction_date,'UTC','Asia/Kolkata')) 
    FROM table
    WHERE DATE(CONVERT_TZ(transaction_date,'UTC','Asia/Kolkata'))='2021-11-19';
    

    En la consulta anterior, la función CONVERT_TZ() convierte la fecha de transacción de la zona horaria UTC a la zona horaria ‘Asia/Kolkata’. Puede reemplazarla por la zona horaria en la que se almacena la fecha de transacción.

    Si esta solución no funciona, puede intentar cambiar la zona horaria en el archivo de configuración de MySQL o verificar la zona horaria del servidor y corregirla a la zona horaria correcta.

    ¡Espero que esto ayude!

Comments are closed.