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 04-02-2005
Choclito Choclito is offline
Miembro
 
Registrado: jul 2004
Posts: 169
Poder: 20
Choclito Va por buen camino
Question Problemas al restar campos timestamp en Proc. Almacenado

Hola amigos del foro, nuevamente les pido su muy valiosa ayuda esta vez el problema q tengo es el siguiente
Quiero hacer el registro del tiempo que utiliza un determinado usuario del sistema q ya desarrolle, para eso tengo una tabla
bitacora (
login varchar (15),
fecha_ingreso timestamp,
fecha_salida timestamp,
duracion timestamp,
activo char (1))
donde login es llave foranea, primero hice un proc almacenado para registrar al usuario y la fecha hora que ingresa el problema q tengo es q hice otro pra registrar a que hora sale del sistema y para eso hice lo siguiente:
/*En Ibexpert*/
begin
select b.login
from bitacora b
where (( b.login=:login))into :log;
if (:log is not null) then
begin
update bitacora set
bitacora.fecha_salida=current_timestamp,
bitacora.duracion=cast (current_timestamp-bitacora.fecha_ingreso as timestamp),
bitacora.estado='D'
where (( bitacora.login=:log) and (bitacora.estado='A'));
end
end

pues bien ejecutando el proc almacenado me sale el siguiente error:

Overflow occurred during data type conversion.
conversion error from string "3.263009259".

Ahora nose en que estoy errando o talves es en definir como char o como varchar el campo duracion, o la definicion de los campos fecha_ingreso y fecha_salida pero al hacer me sale de igual forma el error

Me gustaria q el resultado me salga algo asi como :
2:33:12 que indique 2 horas 33 minutos y 12 segundos

Antetodo muchas gracias por la ayuda que me brinden, o talves lo que hice esta mal asi y si fuese asi quisiera porfavor que me indicen otra forma de realizar lo que quiero hacer
Nuevamente muchas gracias por la ayuda que me brinden
Responder Con Cita
  #2  
Antiguo 12-02-2005
Choclito Choclito is offline
Miembro
 
Registrado: jul 2004
Posts: 169
Poder: 20
Choclito Va por buen camino
ayuda

nuevamente saludo a todos los del foro y les pido que me den una pauta hasta ahora hago q en una consulta me muetre la diferencia de fecha inicio y fecha final pero el detalle es que esa diferencia quisiera guardarlo en un campo de mi tabla y mi duda es como tengo q definir ese campo (varchar,timestamp,date,time) y otra duda q tengo es como hago para q esa diferencia de por ejemplo hora inicio 14:30 hora final 14:45 me salga 0:15 bueno porfavor espero su muy valiosa ayuda
Responder Con Cita
  #3  
Antiguo 12-02-2005
crasv crasv is offline
Miembro
 
Registrado: feb 2004
Posts: 10
Poder: 0
crasv Va por buen camino
Hola.

Podrias trabajar almacenando la horas en campos varchar y la siguiente funcion te arrojaria los minutos para que luego los conviertas como quieras.

el formato de hora debe ser HH:mm

hora1,hora2 serian varchar(15)

minutos seria integer

minutos = ((cast(substr(hora2,1,2) as integer)*60)+
(cast(substr(hora2,4,2) as integer)))-
(cast(substr(hora1,1,2) as integer)+(cast(substr(hora1,4,2) as integer*60)))
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


La franja horaria es GMT +2. Ahora son las 03:16:47.


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