Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 01-08-2006
mcarazas mcarazas is offline
Miembro
 
Registrado: may 2006
Posts: 40
Poder: 0
mcarazas Va por buen camino
Question Problema con fechas

Hola amigos del foro:

Tengo un problema con fechas, la situación es la siguente:

En un stringGrid descargo todas las fechas que tengo en mi base de datos los descargo y les pongo formato con FormatDateTime ('dd/mm/yyyy', fecha) en el celda del StringGrid se muestra por ejemplo 01/08/2006 hasta ahi todo esta bien, pero cuando quiero volver a guardar los mismos datos a mi base de datos que es PostGreSQL, para esto utilizo la instruccion StrToDateTime para volver a darle formato a las fechas que estan en formato de cadena, el problema es que esta instruccion lo guarda como esta definida la cadena, mi problema es que a la hora de ver en mi base de datos las fechas estan cambiadas por ejemplo la fecha que estaba en la base de datos es 01/08/2006 en el grid pero en la base de datos esta como 2001/08/06 lo ha invertido.

Como puedo dar solucion a este problema, espero su ayuda gracias
Responder Con Cita
  #2  
Antiguo 01-08-2006
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
01/08/2006
2001/08/06

Curioso, si señor, le resta cinco años y despues le suma 6 días .

Supongo que la segunda fecha querías decir 2006/08/01. ¿qué programa usas para ver la fecha en la base de datos? Quizás está ahí el problema, el programa que usas, utiliza el formato aaaa/mm/dd. como sabes una fecha es sólamente los días que han transcurrido desde el día del calendario Base 31/12/1899, por tanto, da igual el formato que se guarde la fecha, siempre y cuando corresponda a la misma fecha (vaya juego de palabras... ).

Si tienes guardado 01 de agosto de 2006 en formato mm/dd y despues lo interpretas con formato dd/mm ahí si tienes un gran problema, ya que estarías diciendo que es 8 de enero.

Conclusión: da igual el formato que uses siempre y cuando uses el mismo formato para mostrar una fecha y guardarla.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #3  
Antiguo 02-08-2006
mcarazas mcarazas is offline
Miembro
 
Registrado: may 2006
Posts: 40
Poder: 0
mcarazas Va por buen camino
Question Error

Gracias por responder pero me sigue saliendo error, el programa que utilizo es el PgAdmin te mando un poco del codigo que estoy utilizando:

Código Delphi [-]

GetLocaleFormatSettings(GetUserDefaultLCID, MySettings);
  MySettings.DateSeparator := '/';
  MySettings.TimeSeparator := ':';
  MySettings.ShortDateFormat := 'dd/mm/yy';
  MySettings.ShortTimeFormat := 'hh:mm:ss';

while Not SQLTres.Eof do
  begin
    i := i + 1;
    with SG do
    begin
      RowCount:=RowCount + 1;
//Coloco en el grid la fecha de la base de datos para mostrar y modificar
     
Cells[4,i]:= FormatDateTime(SQLTres.FieldByName('kar_finicio').AsDateTime,MySettings);


    end;
    SQLTres.Next;
  end;

//Es de donde capturo la fecha que quiero guardar
fechaInicio := StrToDateTime(Cells[4,i]);
//A la hora de guardar invierte la fecha si los datos son coherentes lo guarda pero si no me sale un error del motor de base de datos donde dice que el rango no es valido

El formato de la base de datos es yyyy/mm/dd, como soluciono este problema, espero puedas ayudarme gracias

Última edición por mcarazas fecha: 02-08-2006 a las 00:20:51.
Responder Con Cita
  #4  
Antiguo 02-08-2006
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Para recuperarlo de la forma correcta de tu BBDD, lo único que necesitas es esto:
Código Delphi [-]
Cells[4,i]:= FormatDateTime('dd/mm/yyyy',          
             SQLTres.FieldByName('kar_finicio').AsDateTime);

Para asignar una fecha a un campo usa:
Código Delphi [-]
  fechaInicio := StrToDateTime(Cells[4,i]);
  sqltres.FieldByName('kar_finicio').AsDateTime := fechaInicio;
El punto está en usar ".AsDateTime := " dejando que delphi resuelva el formato con tu BBDD. Tú te quitas de problemas.

Tarde o temprano, necesitarás pedir un listado por rango de fechas, en ese caso, haz lo mismo, que delphi se encargue de traducir las fechas:
Código Delphi [-]
  query.sql.text := ' select * from tabla where kar_finicio >= :fInicio';
  query.Parambyname('fInicio').AsDateTime := StrToDateTime(Cells[4,2]);

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #5  
Antiguo 02-08-2006
mcarazas mcarazas is offline
Miembro
 
Registrado: may 2006
Posts: 40
Poder: 0
mcarazas Va por buen camino
Smile Agradecimiento

Te cuento que resolvi el problema, pero la solución que me diste ya la probé al principio y tengo el mismo error, la solución que tome es intercambiar la fecha como una cadena de texto e inverti la cadena, y asi solucione el problema.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
problema con fechas gustavoh Conexión con bases de datos 5 07-02-2006 14:17:20
Problema con fechas davidgaldo Conexión con bases de datos 2 30-07-2004 16:50:42
Problema con fechas davidgaldo Conexión con bases de datos 1 07-06-2004 10:30:03
problema con fechas virolu SQL 2 18-05-2004 00:44:44
Problema Con Fechas En Bd davidgaldo Conexión con bases de datos 2 20-02-2004 13:47:05


La franja horaria es GMT +2. Ahora son las 12:07:37.


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
Copyright 1996-2007 Club Delphi