el formatro que debuelve now() es fecha y hora
y tu campo es date == solamente la hora
por eso el sub string que debuelve solo los 10 promeros caracteres osea la fecha.
ahora es mas facil usar: CURDATE() pues esta debuelve la fecha sin la hora
Código SQL:
Ver originalSELECT * FROM docs_subidos WHERE
docs_subidos.estatus = 1
AND docs_subidos.fecha BETWEEN ( DATE_SUB(CURDATE(), INTERVAL 6 MONTH) ) AND (CURDATE());
asi que esa seria la solucion.
ahora para probar no creo que debas esperar solo basta com probar en una tabla copiar algunos datos y hacer pruebas.