Tienes un gran problema rockex, por que según entiendo en el post en que david el grande te ha asesorado, la fecha la tienes como varchar y no como date.
Yo te propongo modificar el tipo de dato de varchar a date en la tabla.
Pero para eso, debes hacer varias cosas:
Como ya hay registros en la base de datos y no se pueden perder, es necesario convertir primero estos datos a formatos que los entienda el tipo de dato date. Te muestro en un ejemplo lo que debes hacer para cumplir con exito la operación de conversión:
Código mysql:
Ver originalPaso 0: Iniciar una transacción. En caso de que se haga algo mal,
Si algo sale mal en cualquier paso, debes digitar:
Y empezar de nuevo el proceso.
Paso
1: Creo tabla con tipo de dato
varchar.
(Asi es como lo tienes
)Query OK, 0 rows affected (0.03 sec)
Paso 2: Ingreso un valor con formato (dd/mm/yyyy)
Query OK, 1 row affected (0.00 sec)
Paso 3: Consulta de tabla
+------------+
| fecha |
+------------+
| 20/03/2009 |
+------------+
Paso 4: Hay que reemplazar los '/' por '.' para acomodarnos al formato EUR de
Query OK, 1 row affected (0.05 sec)
Paso 5: Consulta para verificar que haya quedado bien.
+------------+
| fecha |
+------------+
| 20.03.2009 |
+------------+
Paso 6:Convertir las fechas de formato dd.mm.yyyy a formato mysql yyyy-mm-dd
Query OK, 1 row affected (0.00 sec)
Paso7: verificar que esté bien.
+------------+
| fecha |
+------------+
| 2009-03-20 |
+------------+
Query OK, 1 row affected (0.03 sec)
Paso 9: Verificar que todo esté bien.
+------------+
| fecha |
+------------+
| 2009-03-20 |
+------------+
Paso 10: si todo está bien confirmamos la transacción:
Query OK, 0 rows affected (0.00 sec)
De esta forma no tendrás que utilizar el str_to_date para consultar la fecha, sino que puedes utilizar el between con el campo limpio.
Cualquier cosa, lo comentas.
Un saludo.