Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   duda con formato fecha en firebird (https://www.clubdelphi.com/foros/showthread.php?t=36157)

gmontes 03-10-2006 23:08:09

duda con formato fecha en firebird
 
tengo un campo date en una tabla de mi db

cuando guardo la variable fecha que es un string tengo que formatearla a yyyy/mm/dd, eso no es problema.

el problema es cuando quiero consultar esa fecha la veo en la tabla como dd/mm/yyyy 01:00:00 a.m.

como hago que no guarde el valor 01:00 que evita que pueda hacer comparaciones en mis reportes. o que lo guarde como 00:00:00 a.m.

ya le di el formato yyyy/mm/dd+' 24:00:00' ó '00:00' y no resulto. pone 01:24:00 y 01:00:00

por yyyy/mm/dd es copy(sFecha_trabajo,7,4)+'/'+copy(sFecha_trabajo,4,2)+'/'+copy(sFecha_trabajo,1,4)

:confused:

alguna sujerencia
gracias

axelbb 11-10-2006 16:17:45

¿Estás usando formato de campo tipo Date en la BD? Lo que estás describiendo es un campo de formato Timestamp.:confused:

fly 12-10-2006 05:05:04

Si usas Dialect 1 los campos DATE llevan tambien la hora, como si fuera un DateTime.. ya ves.... Pásatea a Dialect 3 y ya queda solucionado.

De todas formas depende de como lo leas en Delphi, si lo lees como una fecha no te pilla la hora pero si lo lees como un texto si que te la muestra (por ejempo si lo visualizas en un Memo o concatenas campos mediante || o haces un CAST ... VARCHAR() ).

A mi al insertar o modificar el campo me pilla siempre la hora como 00:00:00 tanto en los campos que se inicializan en un trigger
Código SQL [-]
IF (NEW.fecha_entr IS NULL) THEN   NEW.Fecha_entr="TODAY";
como los que pongo desde Delphi
Código Delphi [-]
     Dmq1.Edit_Q.SQL.Text:=
          ' UPDATE ENTRADA SET'+
          '   fecha='+Dmq1.FechaToIB(Edit_fecha.Text)+', '+
          '   hora='+Dmq1.HoraToIB(Edit_hora.Text)+', '+
          '   origen='+Dmq1.TextoSQL(Edit_origen.Text)+', '+
          ..........

Aqui la funcion que hice tan solo se encarga de la conversión de formato, que por lo que veo es diferente a la tuya (yyyy/mm/dd):

Código Delphi [-]
 Function TDMQ1.FechaFromIB(fecha:TDateTime):String;
  var resultado:string;
      formato : TFormatSettings;
  begin
{TODO -csinprisa -ofly: Ojo no verifica fechas erroneas, terminarlo...}
   formato.ShortDateFormat:='dd/mm/yy';
   formato.DateSeparator:='/';
   resultado:='"'+DateToStr(fecha,formato)+'"';
   if resultado='""' then resultado:='NULL';
   FechaFromIB:=resultado;
  end;

Espero que te sirva de algo.

gmontes 12-10-2006 16:11:10

si estoy utilizando dialect 1, lo voy a cambiar. y a probar lo que me sugieren.

gracias:D


La franja horaria es GMT +2. Ahora son las 04:00:03.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi