Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   convertir fecha en la senetencia sql.. (https://www.clubdelphi.com/foros/showthread.php?t=29736)

uper 31-01-2006 15:58:20

convertir fecha en la senetencia sql..
 
hola todos

tengo una duda del sql para ingresar fechas a interbase, el formato que usa es 'aa/mm/dd' y he extraido los datos que voy a ingresar por sentencias sql, INSERT INTO "MOV_STOCK" ("MOVS_ID", "MOVS_STOCK_ID", "MOVS_FECHA_REG", "MOVS_TIPO_MOV") VALUES (1, 752, '22/09/04', 'E');
bueno no he podido resolverlo de que deba de cambiar la fecha 22/09/04 por esta que asi lo acepta el interbase '04/09/22'

No se si se pueda agregar alguna funcion a la fecha para que la acepte el sql de la b.d. debido a esto, he tenido que pasarlo a un editor de texto y buscar la fecha y remplazar por la correcta, es posible hacer esto. en le ibconsole da un error de conversion de datos por que no acepta la fecha como he extraido el datos sino que lo tengo que cambiar el formato.

gracias, conocen alguna manera.

cuburu 01-02-2006 02:53:36

Ami me pasaba lo mismo, yo hice un procedimiento en la Base de Datos Firebird que son muy similares y cuando le intentaba enviar la fecha me mandaba un error a consecuencia de ello, lo que hice fue en lugar de enviar un campo tipo date enviaba un dato tipo char(10) despúes en el procedimiento hacia lo conversión. Hice algo como esto

Procedimiento

Código:

create procedure actualiza(fecha char(10),
                                    nombre varchar(15),
                                    apellidos varchar(20),
                                    edad integer)
as
declare variable FECH date;
begin
  FECH = :fecha;
  insert into tabla(fecha_tbl, nombre_tbl, apellidos_tbl)
  values(:fecha, :nombre, :apellidos);
end

y en delphi hago algo como esto:

Código Delphi [-]
var
  Inserta: TQuery;
begin
  Inserta := TQuery.Create(nil);
  try
    with Inserta do
    begin
      Close;
      SQL.Clear;
      //Consulto el procedimiento con un simple SELECT *
      SQL.Add('SELECT * FROM actualiza(:FECHA, :NOMBRE, :APELLIDOS)');
      ParamByName('FECHA').asString := DateToStr(FormatDateTime('dd"/"mm"/"aaaa', StrToDate(Edit1.Text)));
      ParamByName('NOMBRE').asString := Edit2.Text;
      ParamByName('APELLIDOS').asString := Edit3.Text;
      Open;
    end;
  finally
    Inserta.Free;
  end;
end;

Como te daras cuenta, envío el formato que ya se que es el que maneja la BD, eso crea dependencia a que el formato que maneja la BD nunca cambie pero me sirve por el momento hasta encontrar una solución.

También dejo la conversión del valor tipo char que envío al procedimiento para que la asigne a una varable y haga las conversiones pertinentes.

Espero te serva de algo esto... nos vemos.

uper 01-02-2006 18:20:13

OK, voy a intentar con esta solucion cuburu, encontre que era tan simple que modifique el formato del panel de control del s.o. de dd/mm/aa a este aaaa/mm/dd y listo cuando extraigo el dato me da el formato que quiero para usarlo en la base.

muchas gracias.


La franja horaria es GMT +2. Ahora son las 15:15:32.

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