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?
davy.ai
La mejor y más segura forma de comparar la fecha almacenada como
TEXT
con la fecha actual es convertir el valorTEXT
a un valorDATE
utilizando la funciónSTR_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
esdd-mm-yyyy
, la consulta para encontrar todos los registros entre la fecha actual y 8 días sería:Explicación:
STR_TO_DATE
convierte el valorTEXT
en la columnadata_fine
a un valorDATE
utilizando el formato'%d-%m-%Y'
.BETWEEN
se utiliza para seleccionar todos los registros cuyo valorDATE
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.