Ver Mensaje Individual
  #6  
Antiguo 13-08-2015
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Reputación: 29
Lepe Va por buen camino
Las fechas en los motores de datos son una lata, si lo pasas como string, intentará cotejarlo con la forma "yyyy-mm-dd", si no casa, pues normalmente lo intenta con el formato "mm-dd-yyyy" y si tampoco casa, normalmente da error. Si el formato lo pasas con formato "dd.mm.yyyy" (al usar puntos como separadores, lo interpreta como fecha española).

Pero lo más normal para dejarse de rollos es:
- BBDD en dialecto 3
- campo en formato date o timestamp
- Los sqls los hace como ha dicho salvo un detalle, las fechas que sean TDate o TDatetime y usando:
Código Delphi [-]
SQLL_Paga.Close;
SQLL_Paga.ParamByName('DESDEDATAI').AsDate := Trunc( DateTimePicker1.DateTime ); // trunc quita la parte horaria de una fecha
SQLL_Paga.ParamByName('FINSDATAF').AsDate := Trunc( DateTimePicker2.DateTime );
SQLL_Paga.ParamByName('ID_MECANIC').AsInteger := F_ModulDades.ActualitzaPID_Mecanic.Value;
SQLL_Paga.Open;

De esa forma es Delphi quien "se pelea con el motor de bases de datos" y le pasa la fecha en el formato correcto, sin tú saber cual es, ni tener que pelearte tú.

Ten mucho cuidado al usar DateToStr y StrTodate, porque lo codificará en el formato que delphi se le ocurra, (en realidad se basa en los formatos que tengas definidos en SysUtils y en la configuración regional de windows), para dejarte de rollos, usa FormatDatetime ('dd/mm/yyyy hh:nn', CampoFechaHora.AsDateTime).


Recuerda que en Delphi un TDateTime es un float donde la parte entera son los días transcurridos desde el día cero (30/12/1899) y la parte decimal es la hora, minutos, segundos y milisegundos.

También aconsejo usar esta otra variante en los sql:
Código SQL [-]
WHERE (DATA between :ESDEDATAI AND :FINSDATAF)
porque a la larga es más legible, aunque si quieres quitar la igualdad de fechas, acabas haciéndolo como antes con el ">" y el "<".


Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.

Última edición por Lepe fecha: 13-08-2015 a las 17:48:37.
Responder Con Cita