Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 19-11-2008
lucho1981 lucho1981 is offline
Miembro
 
Registrado: Apr 2006
Ubicación: Tucuman-Argentina
Posts: 44
Poder: 0
lucho1981 Va por buen camino
Como guardar la fecha de hoy en mysql?

Hola gente, mi duda es sobre como guardar la fecha actual en delphi y viceversa.
Cuando capturo la fecha actual esta en el formato dd/mm/aaaa y mysql toma valores aa/mm/dd.
Como hago para guardarlas y como hago luego para mostrarlas?
Muchas gracias.
Responder Con Cita
  #2  
Antiguo 19-11-2008
Avatar de droguerman
droguerman droguerman is offline
Miembro
 
Registrado: Apr 2005
Ubicación: tierra
Posts: 999
Poder: 14
droguerman Va por buen camino
En caso de fechas actuales yo prefiero que sea el servidor de base de datos el que las guarde (Un usuario puede cambiar la fecha del sistema pero no del servidor) para lo cual puedes usar la función de mysql NOW()
__________________
self.free;
Responder Con Cita
  #3  
Antiguo 20-11-2008
Besto Besto is offline
Miembro
 
Registrado: Apr 2006
Posts: 118
Poder: 13
Besto Va por buen camino
Hola,

a mi las fechas siempre me han dado bastantes problemas. Al final lo que hago es crear un campo en mysql que sea datetime y luego las trato antes de insertarlas en la base de datos.

Cuando inserto un registro en la base de datos formateo antes la fecha:

"insert into .....(..., campotipofecha,...) values (...,FormatDateTime('yyyymmdd',EFecha.date),...)

Para recuperarla no hay ningún problema , el mismo campo se le asigna al componente:

EFecha.date := FieldByName('fecha').AsDateTime;

Si realizas alguna comparación igual que con el insert.

Desde que uso esto no he tenido ningun problema con ellas.
Responder Con Cita
  #4  
Antiguo 20-11-2008
lucho1981 lucho1981 is offline
Miembro
 
Registrado: Apr 2006
Ubicación: Tucuman-Argentina
Posts: 44
Poder: 0
lucho1981 Va por buen camino
Thumbs down

Cita:
Empezado por Besto Ver Mensaje
Al final lo que hago es crear un campo en mysql que sea datetime y luego las trato antes de insertarlas en la base de datos.

Cuando inserto un registro en la base de datos formateo antes la fecha:

"insert into .....(..., campotipofecha,...) values (...,FormatDateTime('yyyymmdd',EFecha.date),...)

Para recuperarla no hay ningún problema , el mismo campo se le asigna al componente:
EFecha.date := FieldByName('fecha').AsDateTime;
Gracias Besto, pero no pude resolver todavia mi problema.

Les cuento q intente en un query
Código SQL [-]
INSERT legajo, duracion, dia INTO tiempotrabajado
VALUES
(:leg, :dura, FORMATDATETIME('yyyymmdd',:hoy))

Donde :hoy es el parametro q recibe
Código Delphi [-]
 ParamByName ('hoy').value:= DATETOSTR(date());

La cuestion es q o hay algo q no comprendi o algo estoy haciendo mal.

Te cuento q uso mysql 5 y delphi 7.
Alguna sugerencia? O como podria guardar la fecha desde la consulta directamente? algo asi como lo q dice Droguerman.

Última edición por lucho1981 fecha: 20-11-2008 a las 20:04:47.
Responder Con Cita
  #5  
Antiguo 20-11-2008
Avatar de roman
roman roman is offline
Moderador
 
Registrado: May 2003
Ubicación: Ciudad de México
Posts: 20.172
Poder: 10
roman Tiene un aura espectacularroman Tiene un aura espectacular
Los problemas con las fechas se evitan si se pasan correctamente como parámetros:

Código SQL [-]
INSERT legajo, duracion, dia INTO tiempotrabajado
VALUES
(:leg, :dura, :hoy)

Código Delphi [-]
ParamByName('hoy').AsDate := date();

O sea, el valor se pasa como tipo TDate y es el propio componente Query quien se encarga del formato adecuado para el motor en cuestión. Observa que debes poner AsDate y no Value.

Si quieres que sea el mismo MySQL el que asigne la fecha usa la función curdate:

Código SQL [-]
INSERT legajo, duracion, dia INTO tiempotrabajado
VALUES
(:leg, :dura, curdate())

// Saludos
Responder Con Cita
  #6  
Antiguo 20-11-2008
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: Aug 2006
Posts: 7.659
Poder: 20
Caral Va por buen camino
Hola
Es raro pero a mi access no me deja hacerlo asi:
Me da error de sintaxis:
Código SQL [-]
INSERT legajo, duracion, dia INTO tiempotrabajado
VALUES (:leg, :dura, :hoy)
Lo tengo que hacer asi:
Código SQL [-]
INSERT INTO tiempotrabajado (legajo, duracion, dia) 
VALUES (:leg, :dura, :hoy)
Osea esto:
Código Delphi [-]
var
dia: Tdatetime;
begin
  dia:= now;
  ADOQuery1.SQL.Text:= 'INSERT INTO tiempotrabajado (legajo, duracion, dia)'+
                       'VALUES (:leg, :dura, :dia1)';
  ADOQuery1.Parameters.ParamByName('leg').Value:= Edit1.Text;
  ADOQuery1.Parameters.ParamByName('dura').Value:= Edit2.Text;
  ADOQuery1.Parameters.ParamByName('dia1').Value:= FormatDateTime('yyyy/mm/dd',dia);
  ADOQuery1.ExecSQL;
end;
Saludos
__________________
Siempre Novato
Responder Con Cita
  #7  
Antiguo 20-11-2008
Avatar de roman
roman roman is offline
Moderador
 
Registrado: May 2003
Ubicación: Ciudad de México
Posts: 20.172
Poder: 10
roman Tiene un aura espectacularroman Tiene un aura espectacular
No me había fijado más que en la parte del VALUES, pero desde luego tienes razón. Tal como lo pones es la sintaxis correcta.

En el caso de ADO, no existe el AsDate como lo había puesto, así que hay que especificar el tipo de datos del parámetro:

Código Delphi [-]
ADOQuery1.Parameters.ParamByName('hoy').DataType := ftDate;
ADOQuery1.Parameters.ParamByName('hoy').Value := date();

// Saludos
Responder Con Cita
  #8  
Antiguo 20-11-2008
lucho1981 lucho1981 is offline
Miembro
 
Registrado: Apr 2006
Ubicación: Tucuman-Argentina
Posts: 44
Poder: 0
lucho1981 Va por buen camino
Gracias

Gracias Roman, probare de hacerlo a tu manera.
Disculpen mi ignorancia
Gracias caral, como siempre dando en el blanco de mi problema..
Responder Con Cita
  #9  
Antiguo 20-11-2008
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: Aug 2006
Posts: 7.659
Poder: 20
Caral Va por buen camino
Hola
Es que entre Novatos nos entendemos.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #10  
Antiguo 20-11-2008
lucho1981 lucho1981 is offline
Miembro
 
Registrado: Apr 2006
Ubicación: Tucuman-Argentina
Posts: 44
Poder: 0
lucho1981 Va por buen camino
Cita:
Empezado por Caral Ver Mensaje
Hola
Es que entre Novatos nos entendemos.
Saludos
Me parece q ya pasaste la etapa de novato, me haces quedar como algo menor a un novato (q era lo q yo me consideraba) jejee.

Aprovecho la oportunidad para preguntar si alguien sabe como capturar el evento anterior al de cerrar la ventana principal.
Trate de usar el evento OnClose del formulario, pero no se si escribo mal el codigo o en el evento equivocado, porq si o si se cierra la ventana.
Código Delphi [-]
procedure TPrincipal.FormClose(Sender: TObject; var Action: TCloseAction);
begin
     if((application.messagebox('Esta seguro que desea cerrar su sesión, y abandonar el programa?','Confirmar', MB_YESNO)=MRYES))then
      begin
        close;
      end;
end;

En el caso de q diga q no....q debo hacer para q no se cierre la ventana principal?
Responder Con Cita
  #11  
Antiguo 20-11-2008
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: Aug 2006
Posts: 7.659
Poder: 20
Caral Va por buen camino
Hola
Esta deberia de ser otra pregunta, otro hilo, pero bueno.
Código Delphi [-]
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
    if MessageDlg('¿Esta seguro que desea cerrar su sesión, y abandonar el programa?', mtConfirmation,
       [mbYes, mbNo], 0) = mrYes then
       Action := caFree
     else
       Action := caNone;
end;
Saludos
__________________
Siempre Novato
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
Guardar null (nolo) en un campo fecha en Firebird cahosoft Conexión con bases de datos 3 19-04-2014 09:54:17
Guardar la fecha de un TDatetimePicker en una base de datos frholguin Conexión con bases de datos 5 11-09-2008 19:48:51
Como guardar la fecha a una tabla irixita SQL 2 19-08-2008 18:59:49
Como consulto un valor en MYSQL por un campo de tipo fecha? flystar MySQL 3 18-09-2007 01:01:33
Como Guardar una foto en un campo MYSql MRS@N SQL 1 25-10-2006 01:07:32


La franja horaria es GMT +2. Ahora son las 00:20:47.


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