Si estás buscando un intervalo de
fechas, pero usas
DATETIMES en la tabla, lo que debes hacer es "cortar" la fecha del campo de modo que no tome las horas, porque cuando operas con DATE y DATETIME mezclados en la consulta, MySQL convierte a DATETIME (mayor rango) todo, y cuando no tiene horas, le pone la hora "00:00:00".
Por eso no te devuelve la fecha que pides.
La cosa en realidad es simple: