Bueno, la sintaxis correcta sería usar un campo
DATE y
no un CHAR para almacenar una
fecha. Sería mucho más simple.
Ahora, para poder hacer la búsqueda tendrás que usar funciones que operarán bien o mal según lo bien o mal que estén guardadas las fechas en la base.
Me explico: Si la fecha está guardada como "31/12/2009", estaríamos frente a un buen estándar y puedes usar MID() o STR_TO_DATE():
Código sql:
Ver originalMID(campo, 3, 2)
STR_TO_DATE(campo, '%d/%m/%Y')
Pero si se guardó algo como esto: "9/5/2009", la función MID() ya no sirve de esa forma, porque esto:
daría esto:
Mi sugerencia, por cuestiones de prevención es usar la conversión de cadenas a fechas (STR_TO_DATE(campo, formato)), ya que definir una fecha implicaría algo así:
Código sql:
Ver originalSELECT *
FROM tabla
WHERE MONTH(STR_TO_DATE(FECHA, '%d/%m/%Y')) = 1;
para obtener las fechas correspondientes a enero, por ejemplo
En cualquier caso que sea, deberás asegurarte de que los usuarios no puedan entrar fechas con un formato incorrecto.