Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   sumar campo de tipo TIMESTAMP (https://www.clubdelphi.com/foros/showthread.php?t=81997)

novato_erick 12-01-2013 18:01:34

sumar campo de tipo TIMESTAMP
 
Hola chicos

tengo una tabla el cual tengo un campo de tipo TIMESTAMP que tiene hasta cuatro marcaciones ejemplo:

12/01/2013 08:54:27 a.m.
12/01/2013 11:59:02 a.m. aqui hay una cantidad de minutos

12/01/2013 13:04:27 p.m.
12/01/2013 19:00:27 p.m. aqui hay otra cantidad de minutos

al final de la consulta me mande el total de minutos y luego ponerlo en horas

necesito consultar los minutos que tiene entre el primer registro el segundo registro..

alguien puede ayudarme porfa... es Firebird 2.5


Saludos

Casimiro Notevi 12-01-2013 18:38:07

Mira los enlaces del final de esta página, seguro que te sirve.

Y recuerda que un campo timestamp (fecha y hora) es un número con decimales, la parte entera son los días transcurridos desde, creo, 1/1/1890 y la parte decimal es la hora del día.
Por lo tanto, para sumar o restar sólo has de hacer eso, sumar o restarlos.

celades1 12-01-2013 18:40:45

Hola

restar dos timestamp * 1440 tendremos los minutos

luedo divides por 60 i tendras el cociente seran las horas y el resto los minutos


Espero que este era el problema

Saludos

ecfisa 12-01-2013 18:44:21

Hola.

Proba si te sirve de este modo:
Código SQL [-]
SELECT DATEDIFF(MINUTE FROM CAMPO_1 TO CAMPO_2) AS LAPSO_1,
       DATEDIFF(MINUTE FROM CAMPO_3 TO CAMPO_4) AS LAPSO_2,
       DATEDIFF(MINUTE FROM CAMPO_1 TO CAMPO_2) +
       DATEDIFF(MINUTE FROM CAMPO_3 TO CAMPO_4) AS LAPSO_TOTAL,
       ... 
FROM FROM TU_TABLA
...

Saludos.

novato_erick 12-01-2013 23:27:18

Hola en mi Tabla TMARCACION tengo 3 campos solamente el ID_MARCACION, ID_EMPLEADOS, HORA de tipo TimesTamp

realice esta consulta

Código SQL [-]
 select (EXTRACT(MINUTE from(m.HORA))) from TEMPLEADOS e, TMARCACIONES m where e.ID_EMPLEADOS = m.ID_EMPLEADOS

me manda valores enteros de los minutos el cual la operación seria:

Cita:

8:54:27 hora 1 Entrada

8(0.54/60)*100 =0.90 sin embargo en el sql me da 0

resultado 8.90


12:27:49 hora 2 Salida

12(0.27/60)*100=0.45 igual manera me da 0

Resultado 12.45

12.45 - 8.90 = 3.55 horas
Pero en mi consulta solo me trae un 0
Código SQL [-]
 select (EXTRACT(MINUTE from(m.HORA))/60) from TEMPLEADOS e, TMARCACIONES m where e.ID_EMPLEADOS = m.ID_EMPLEADOS


Saludos

novato_erick 12-01-2013 23:55:02

Resolvi el asunto que me devuelve 0 con esta modificacion:

Código SQL [-]
 select cast((EXTRACT(MINUTE from(m.HORA)))*100 as integer)/60 from TEMPLEADOS e, TMARCACIONES m where e.ID_EMPLEADOS = m.ID_EMPLEADOS

sin embargo me devuelve siempre enteros por ejemplo:

Cita:

8:54:27 hora 1 Entrada

8(0.54/60)*100 =0.90 sin embargo en el sql me da 90 necesitando 0.90

resultado 8.90


12:27:49 hora 2 Salida

12(0.27/60)*100=0.45 igual manera me da 45 necesitando 0.45

Resultado 12.45

12.45 - 8.90 = 3.55 horas


Saludos

novato_erick 13-01-2013 21:15:01

Resulto Consulta con decimales firebird e interbase
 
Hola chicos buscando y buscando hasta hoy domingo tambien encontre una sugerencia aqui mismo por [Al González], Casimiro Notevi, [Delphius], ecfisa: "Nunca dejare de agradecer a ustedes chicos Expertos en Delphi y Firebird por darnos su gran ayuda"

http://www.clubdelphi.com/foros/showthread.php?t=72413

La solucion

Código SQL [-]
 select cast(EXTRACT(MINUTE from(m.HORA)) as double PRECISION)/60 from TEMPLEADOS e, TMARCACIONES m where e.ID_EMPLEADOS = m.ID_EMPLEADOS

dentro del MINUTE from(m.HORA) tenia que ponerle un tipo de valor(DOUBLE PRECISION) en este caso y eso provoco que me mandara el resultado como queria 0.90 era cuestion de leer...

Saludos chicos


novato_erick

Casimiro Notevi 13-01-2013 22:46:34

Cita:

Empezado por novato_erick (Mensaje 453352)
... era cuestion de leer...

Tú lo has dicho, amigo, y es que realmente el 99% de todas las preguntas que se hacen son repetidas.


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

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