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.

Consulta de MySQL para seleccionar registros con fecha

Tengo una base de datos donde data_fine está definido como TEXT y contiene valores como “25-05-2021“. Necesito encontrar todos los registros entre la fecha actual y hasta 8 días.

Intenté la siguiente consulta, pero no se muestra nada.

SELECT * from tabella_raw where data_fine > DATE(NOW) and data_fine < DATE(NOW() + INTERVAL 8 DAYS)

¿Cuál es la mejor y segura manera de comparar la fecha almacenada como TEXT con la fecha actual?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    La mejor y más segura forma de comparar la fecha almacenada como TEXT con la fecha actual es convertir el valor TEXT a un valor DATE utilizando la función STR_TO_DATE en MySQL. La función toma dos argumentos: la cadena que se convertirá y el formato de la cadena de fecha.

    Suponiendo que el formato de la cadena de fecha en la columna data_fine es dd-mm-yyyy, la consulta para encontrar todos los registros entre la fecha actual y 8 días sería:

    SELECT * 
    FROM tabella_raw 
    WHERE STR_TO_DATE(data_fine, '%d-%m-%Y') BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 8 DAY)
    

    Explicación:

    • La función STR_TO_DATE convierte el valor TEXT en la columna data_fine a un valor DATE utilizando el formato '%d-%m-%Y'.
    • La palabra clave BETWEEN se utiliza para seleccionar todos los registros cuyo valor DATE está entre la fecha actual (CURDATE()) y la fecha dentro de 8 días a partir de ahora (DATE_ADD(CURDATE(), INTERVAL 8 DAY)).

    Esta consulta devolverá todos los registros donde el valor de data_fine se encuentra entre la fecha actual y dentro de 8 días a partir de ahora.

Comments are closed.