PDA

Ver la Versión Completa : sumar campo de tipo TIMESTAMP


novato_erick
12-01-2013, 18:01:34
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:

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


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:


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

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:


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:


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
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

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
... era cuestion de leer...

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