Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Diferencia 2 Dias entre Tdatetime (delphi) y Datetime (SQL server) (https://www.clubdelphi.com/foros/showthread.php?t=43346)

sinalocarlos 09-05-2007 03:17:08

Diferencia 2 Dias entre Tdatetime (delphi) y Datetime (SQL server)
 
Buen Día Foro

Apelo a la experiencia de la comunidad.

Resulta, pues, que cargo un archivo de excel con una serie de datos, entre ellos viene una columna fecha, la cual para comodidad deje el formato configurable, esto es lo pueden subir '2007/05/08' o '08/05/2007', y en la conflagración del sistemita le pido al usuario que formato utiliza, bueno al grano, armo la fecha con:

Código Delphi [-]
date:=encodedate(strtoint(copy(fechastr,1,4)),strtoint(copy(fechastr,6,2)),strtoint(copy(fechastr,9,  2)))


para el caso del formato '2007/05/08'

y resulta que me da un valor de 39210, cuando debería de ser 39208, y por que debería ser 39208 me preguntaran, pues el valor lo guardo en una tabla sql y ahí me guarda '2007/05/10', tiro la consulta:
Código SQL [-]
select cast(39210 as datetime)

y me regresa '2007/05/10'

algún consejo sobre que debo revisar, alguien que le haya pasado algo similar???

egostar 09-05-2007 03:50:20

Hola sinocarlos

Pues si que está raro, el problema creo yo esta en la instrucción CAST, porque Delphi toma bien los valores.

Hice estas dos pruebas y efectivamente, '2007/05/08' nos da 39210.

Código Delphi [-]
procedure TForm1.BitBtn1Click(Sender: TObject);
var
  fechastr: String;
  date: TDateTime;
begin
  fechastr := '2007/05/08';
  date := encodedate(strtoint(copy(fechastr,1,4)),
          strtoint(copy(fechastr,6,2)),
          strtoint(copy(fechastr,9, 2)));
  ShowMessage(FloattoStr(Date)+'-->'+DatetoStr(date));
end;

procedure TForm1.BitBtn2Click(Sender: TObject);
begin
  ShowMessage(DatetoStr(39210));
end;


Salud OS.

sinalocarlos 10-05-2007 03:00:38

saludos egostar

Disculpas por no contestar antes pero tengo trabajo hasta para repartir.

Pues si, el problema es que SQL server o al menos el mio (SQL Server 2000 SP3 en Ingles con el Collate SQL_Latin1_General_CP1_CI_AS por default), tiene como fecha para el 0 a '1900-01-01 00:00:00.000'
Código SQL [-]
select cast (0 as datetime)

y Delphi (Borland Developer Studio 2006 :)) toma el 0 como 1899/12/30
Código Delphi [-]
ShowMessage(DatetoStr(0));


Me sambullire en los chm y mantengo infomada a la comunidad de lo que encuentre


La franja horaria es GMT +2. Ahora son las 00:56:22.

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