![]() |
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 |
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:confused:) 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
|
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))) |
La franja horaria es GMT +2. Ahora son las 13:16:45. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi