Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 09-07-2019
LIA_GUILLERMO LIA_GUILLERMO is offline
Miembro
 
Registrado: feb 2016
Posts: 32
Poder: 0
LIA_GUILLERMO Va por buen camino
Tipo de dato DateTime y Time Stamp

Buenos días me gustaría que me pudieran ayudar en algunas dudas que tengo acerca de un proyecto que realizó pero me encontré con la siguiente situación:

Tengo una base de datos Firebird que es administrada desde IBExpert con la siguiente estructura:

BD: EmpresaX
Tablas: Configuración, EA, SA, ED, SD.

Las tablas de EA, SA, ED, SD tienen solo 4 campos que son: Índice, Valor, Status y Fecha_Hora.

Mi problema es el siguiente:

Desde Delphi tengo un procedimiento que se encarga de insertar a la base de datos estos campos, pero tengo un problema con el tipo de dato TDateTime ya que aun no comprendo cómo podría insertarlo en la base de datos en el campo Fecha_Hora que es un Time Stamp y que no tenga tanta pérdida de resolución.

Si me pudieran apoyar en este detalle que tengo para poder comprender mejor que es lo que tengo que realizar se los agradeceria.

Última edición por LIA_GUILLERMO fecha: 09-07-2019 a las 18:18:52.
Responder Con Cita
  #2  
Antiguo 09-07-2019
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.257
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por LIA_GUILLERMO Ver Mensaje
... tengo un problema con el tipo de dato TDateTime ya que aun no comprendo cómo podría insertarlo en la base de datos en el campo Fecha_Hora que es un Time Stamp y que no tenga tanta pérdida de resolución.
¿Pérdida de resolución?
Responder Con Cita
  #3  
Antiguo 09-07-2019
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.257
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Mira estos, creo que te servirá.
https://firebird21.wordpress.com/201...hora-actuales/
https://firebirdsql.org/en/firebird-date-literals/

Última edición por Casimiro Notevi fecha: 09-07-2019 a las 20:13:19.
Responder Con Cita
  #4  
Antiguo 09-07-2019
LIA_GUILLERMO LIA_GUILLERMO is offline
Miembro
 
Registrado: feb 2016
Posts: 32
Poder: 0
LIA_GUILLERMO Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
¿Pérdida de resolución?
Si que no haya pérdida de tiempo al registrar la fecha y hora en la base de datos y de la misma manera para extraer esa fecha y hora Guardada.
Responder Con Cita
  #5  
Antiguo 09-07-2019
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

Me parece que tu problema es de visualización, fijate si de este modo te muestra el dato en la resolución correcta:
Código SQL [-]
SELECT  
   INDICE, VALOR, STATUS, CAST(FECHA_HORA AS VARCHAR(24))
FROM EA

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #6  
Antiguo 09-07-2019
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.927
Poder: 26
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Porque mejor no muestras la estructura en SQL y el ejemplo con DATOS de lo que sale mal???
__________________
El malabarista.
Responder Con Cita
  #7  
Antiguo 09-07-2019
LIA_GUILLERMO LIA_GUILLERMO is offline
Miembro
 
Registrado: feb 2016
Posts: 32
Poder: 0
LIA_GUILLERMO Va por buen camino
Cita:
Empezado por mamcx Ver Mensaje
Porque mejor no muestras la estructura en SQL y el ejemplo con DATOS de lo que sale mal???
Mi función es la siguiente:
Código Delphi [-]
Function TForm1.InsertEA (Const ADateTime :TDateTime; AIx :Byte; AValor :Real;
AStatus :Integer) :Integer;          (AIx es el Indice)
Begin
  FDConnectWriteDB.ExecSQL (System.SysUtils.Format (
    'Insert into EA Values (%d, %n, %d, %d)',[AIX, AValor, ADateTime, AStatus]));
End;

Lo primero que quiero resolver es cómo poder guardar el ADateTime al campo Fecha_Hora que es un Time Stamp en mi base de datos, ya que asi como lo tengo pues me marca una incompatibilidad de tipos.

Última edición por ecfisa fecha: 09-07-2019 a las 20:56:16. Razón: Agregar etiquetas [delphi]
Responder Con Cita
  #8  
Antiguo 09-07-2019
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.
Cita:
Empezado por LIA_GUILLERMO Ver Mensaje
... pues me marca una incompatibilidad de tipos.
Pero... ese es un problema diferente al que mencionabas antes.

Bueno, así a simple vista el tercer parámetro de Format lo declaras de tipo entero y el tipo TDateTime debería estar como flotante '%f', fíjate si ahí está el problema.

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #9  
Antiguo 09-07-2019
LIA_GUILLERMO LIA_GUILLERMO is offline
Miembro
 
Registrado: feb 2016
Posts: 32
Poder: 0
LIA_GUILLERMO Va por buen camino
Cita:
Empezado por ecfisa Ver Mensaje
Hola.

Pero... ese es un problema diferente al que mencionabas antes.

Bueno, así a simple vista el tercer parámetro de Format lo declaras de tipo entero y el tipo TDateTime debería estar como flotante '%f', fíjate si ahí está el problema.

Saludos
Si lo intente con '%f' pero me marca un error de conversión de cadena
Responder Con Cita
  #10  
Antiguo 09-07-2019
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.927
Poder: 26
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
1- Deberias usar parametros en vez de formatear manualmente
2- %d es para integers
3- No pones comillas a la fecha
4- Usa formato ISO

http://www.delphibasics.co.uk/RTL.as...FormatDateTime
__________________
El malabarista.
Responder Con Cita
  #11  
Antiguo 19-07-2019
(MAJ) (MAJ) is offline
Miembro
 
Registrado: abr 2007
Posts: 71
Poder: 18
(MAJ) Va por buen camino
Buenas, lo que podrías hacer es enviar la fecha como un string llamando a "formatdatetime"
Código Delphi [-]
Function TForm1.InsertEA (Const ADateTime :TDateTime; AIx :Byte; AValor :Real; AStatus :Integer) :Integer;      //    (AIx es el Indice) 
Begin   
  FDConnectWriteDB.ExecSQL (System.SysUtils.Format ('Insert into EA Values (%d, %n, %s, %d)',[AIX, AValor, FormatDateTime('mm/dd/yyyy hh:nn:ss:zzz',ADateTime), AStatus])); 
End;
aplicas el formato que te sirva y no perdés precisión
http://www.delphibasics.co.uk/RTL.as...FormatDateTime
__________________
Código Delphi [-]
//Inserte una firma aquí...

Última edición por Casimiro Notevi fecha: 20-07-2019 a las 00:29:16.
Responder Con Cita
Respuesta



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
TADOQuery - trae un tipo de dato Date/DateTime como WideString Maniches MS SQL Server 0 03-11-2017 01:18:56
Firebird y tipo de dato Time blackx5n Firebird e Interbase 4 18-09-2008 09:00:29
Duda sobre el tipo de datos DATETIME en MYSQL flystar MySQL 2 16-07-2007 23:21:43
Restar dos campos de Tipo DateTime JuanPa1 SQL 4 19-08-2006 03:03:34
Campos DateTime recibiendo Time amesoft Conexión con bases de datos 1 25-02-2005 23:22:23


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


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