Ver Mensaje Individual
  #1  
Antiguo 24-11-2008
Avatar de salvica
salvica salvica is offline
Miembro
 
Registrado: mar 2004
Ubicación: Albacete (España) ... En un lugar de la Mancha ...
Posts: 304
Reputación: 21
salvica Va por buen camino
Sobre el uso de ParamByName

Hola a tod@s.

El otro día digamos que "me llamaron la atención" (en plan coloquial) sobre la forma que tenía de comparar fechas encerrádolas entre comillas y que era mejor utilizar ParamByName en su lugar.

Bien, hasta ahora el método de encerrar la fecha entre comillas nunca me habia dado problemas (Delphi-7, Zeos-6 y MySql-5) y pensaba que era lo correcto (mejor con un ejemplo)

Sacar los datos entre las 21:00:00 de ayer y las 00:00:00 horas de mañana para las horas "en punto"

Mi forma devuelve 26 filas
Código SQL [-]
     SQL.Add( ' WHERE (fecha="2008-11-23" AND DATE_FORMAT(hora, "%H:%i:%s")="21:00:00")' );
     SQL.Add( '    OR (fecha="2008-11-24" AND DATE_FORMAT(hora,    "%i:%s")="00:00")' );
     SQL.Add( '    OR (fecha="2008-11-25" AND DATE_FORMAT(hora, "%H:%i:%s")="00:00:00")' );

Con ParamByName devuelve una sola fila
Código SQL [-]
     SQL.Add( ' WHERE (fecha = :FechaAyer AND DATE_FORMAT(hora, "%H:%i:%s")="21:00:00")' );
     SQL.Add( '    OR (fecha = :FechaHoy  AND DATE_FORMAT(hora,   "%%i:%s")="00:00")' );
     SQL.Add( '    OR (fecha = :FechaMana AND DATE_FORMAT(hora, "%H:%i:%s")="00:00:00")' );
     SQL.Add( ' ORDER BY psensor.clave' );
     ParamByName('FechaAyer').AsDate := MI_FECHA-1;
     ParamByName('FechaHoy').AsDate  := MI_FECHA;
     ParamByName('FechaMana').AsDate := MI_FECHA+1;

¿No se utiliza asi?

Gracias anticipadas
Salvica
Responder Con Cita