Consultar por un sólo día tiene dos detalles a considerar:
1. Si el campo en la tabla se definió como DATE, es simplemente usar en el string el formato estándar del date:
Código sql:
Ver originalSELECT *
FROM P
WHERE F_INGRESO = 'stringDeFecha'
ORDER BY CODIGO;
Siendo el formato del string "yyyy-MM-dd".
2. Si el campo en la tabla se definió como DATETIME, se debe hacer -especialmente en MySQL 5.0 o superior- una conversión previa
sobre el campo de la tabla para obtener el formato correcto:
Código sql:
Ver originalSELECT *
FROM P
WHERE DATE(F_INGRESO) = 'stringDeFecha'
ORDER BY CODIGO;
Esto es simplemente porque lo que buscas comparar el la parte de fecha (DATE) de la comparación.
Recalco lo de la versión porque MySQL hace conversiones implícitas entre DATE y DATETIME, pero el problema es que si el campo de la tabla tuviese el valor '2008-10-19 08:22:45', por ejemplo, la comparación se haría entre estos valores: '2008-10-19 08:22:45' = '2008-10-19 00:00:00', los cuales son obviamente diferentes, a pesar de ser iguales las fechas.
Esa especie "bug" del funcionamiento de la conversión se debe a que lo que hace MySQL es llevar el tipo de dato de menor representación al de mayor (DATETIME en este caso), y como ese dato no contiene horas, se las agrega como '00:00:00'.
Si usases MySQL 4.0.22, la cosa es diferente. En esa versión MySQL "recortaba" el valor mayor, dejando un valor menor (DATE). Pero lo cambiaron porque generaba demasiados problemas a los usuarios, y además carecía de lógica el método.