El caracter porcentual (%) es un caracter comodín para ser usado dentro de un string, pero no tiene significado por sí mismo. Si intentas usa la consulta tal y como está planteada lo único que tendrás es un mensaje de "Incorrect data value '%' for column 'fecha_nacimiento' at row 1", simplemente porque el valor representado en la comparación es un caracter porcentual y no una fecha.
El caracter se usa colocándolo dentro de un string, sea en los extremos, o en el centro y representa literalmente
cualquier cantidad de caracteres en esa posición dentro del string, mas el contenido del resto de string.
En el ejemplo, el uso más aproximado sería:
Código:
SELECT `usuario`
FROM `users`
WHERE `activo`= '1'
AND `fecha_nacimiento`
BETWEEN '2007-01-01' AND `fecha_nacimiento` '2008-01-01';
He suprimido del ejemplo tres de los LIKE, porque si tu intención es -como se infiere en el caso- que tome todos los valores, ¿qué sentido tiene hacer una comparación que no filtra nada?.
Cambié el LIKE '1' porque en este caso siemrpe te devolverá el nº 1, ya que solo 1 es como (like) 1. También el comodín en las fechas por la razón que te dije. Si el tema es un rango variable de valores, o las ingresas en una variable, o defines el acotamiento de tiempo más aproximado.
Si por ejemplo, es determinados meses del año, debería ser
Código:
SELECT `usuario`
FROM `users`
WHERE `activo`= '1'
AND MONTH(`fecha_nacimiento`)
IN (aquí va la lista de numeros de meses separados por comas);