Ver Mensaje Individual
  #4 (permalink)  
Antiguo 19/02/2010, 09:25
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: comparar variables datetime Vs date

Veamos. El tema es saber cómo están guardadas las fechas en la tabla y cómo es la forma que tiene la fecha en la variable.
Las fechas para ser consideradas como tales para MySQL deben ser, por ejemplo:
1) "2010-12-31 23:59:59" (DATETIME)
2) "2010-12-31" (DATE)
Por ende, las variables tienen que tener la misma forma.

Entonces, si los datos fuesen así, la consulta, para responder bien debería ser:
Código MySQL:
Ver original
  1. FROM $tabla
  2. WHERE DATE(fecha) = DATE('$fecha');

Si $fecha es un DATE, no importa, de todos modos convertir a DATE() un DATE da un DATE.

Ahora bien, si la fecha está entrando "31/12/2010 23:59:59", la cosa cambia. Hay que usar dos funciones: STR_TO_DATE y DATE;
Código MySQL:
Ver original
  1. FROM $tabla
  2. WHERE DATE(fecha) = DATE(STR_TO_DATE('$fecha', '%d/%m%Y %T'));

En cambio, si entra "31/12/2010" solamente habría que usar una:

Código MySQL:
Ver original
  1. FROM $tabla
  2. WHERE DATE(fecha) = STR_TO_DATE('$fecha', '%d/%m%Y');

Nota: Es importante en el pattern poner correctamente el símbolo de separación de dia/mes/año. Para MySQL no es lo mismo usar "/" que "-". Si pones el incorrecto dará NULL.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)