Lo volví a generar de nuevo y a ingresar datos nuevamente. Ahora si salio el 
calculo correcto.
A que se pueda deber que salia de forma erronea el calculo ???


________________________________
De: Micky Khan <mcanc...@hotmail.com>
Enviado: jueves, 22 de noviembre de 2018 15:49
Para: Alvaro Hilario
Cc: alvhe...@2ndquadrant.com; jaime.casan...@2ndquadrant.com; pgsql-es-ayuda; 
pgsql-es-ayuda@lists.postgresql.org
Asunto: RE: sumar horas y minutos

CREATE TABLE tiempos
(
  tiempo interval
)
WITH (
  OIDS=FALSE
);
ALTER TABLE tiempos
  OWNER TO postgres;

Luego agrego :
00:20
00:35
00:50
00:13
00:25
00:53

Y todos se ponen :
"00:20:00"
"00:35:00"
"00:50:00"
"00:13:00"
"00:25:00"
"00:53:00"

Luego hago mi query :
Select sum(tiempo) from tiempos

Y me sale : "03:53:00"



________________________________
De: Alvaro Hilario <king...@gmail.com>
Enviado: jueves, 22 de noviembre de 2018 15:33
Para: mcanc...@hotmail.com
Cc: alvhe...@2ndquadrant.com; jaime.casan...@2ndquadrant.com; pgsql-es-ayuda; 
pgsql-es-ayuda@lists.postgresql.org
Asunto: Re: sumar horas y minutos

Hola, revisa los valores insertados en la tabla, hice el escenario que 
describes y me da el resultado de 3:16 como indicas que debería dar.



El jue., 22 nov. 2018 a las 11:13, Micky Khan 
(<mcanc...@hotmail.com<mailto:mcanc...@hotmail.com>>) escribió:
"tiempo"
"00:20:00"
"00:35:00"
"00:50:00"
"00:13:00"
"00:25:00"
"00:53:00"

Lo puse todo a un campo interval(gracias por la sugerencia) y la suma me sale 
"03:53:00" !!!!!!!!!!!!!!
Deberia salir "03:16"

Select sum(tiempo) from tiempos

Ese fue mi query,...

Por que me calcula mal ??



________________________________
De: Alvaro Herrera <alvhe...@2ndquadrant.com<mailto:alvhe...@2ndquadrant.com>>
Enviado: jueves, 22 de noviembre de 2018 14:59
Para: Jaime Casanova
Cc: MKHotmail; POSTGRES; 
pgsql-es-ayuda@lists.postgresql.org<mailto:pgsql-es-ayuda@lists.postgresql.org>
Asunto: Re: sumar horas y minutos

Jaime Casanova escribió:

> Como Álvaro hace notar lo que interesa aquí es saber el tipo de dato,
> si es interval o time bastaría con un sum si es de tipo text tendrás
> que hacer primero un cast y luego sumar

Ojo que un time no se puede sumar de forma satisfactoria en general.  De
partida, "time" representa hora del día. Ejemplo '13:00' es la 1pm de un cierto
día.  Sumar dos time directamente no tiene sentido, y no hay operador:

=# select time '13:00' + time '13:00';
ERROR:  el operador no es único: time without time zone + time without time zone
LÍNEA 1: select time '13:00' + time '13:00';
                             ^
SUGERENCIA:  No se pudo escoger el operador más adecuado. Puede ser necesario 
agregar conversiones explícitas de tipos.

Ahora, podrías sumar un time con un interval (empezaste a tal hora y te
demoraste cierto intervalo de tiempo).  Pero como time representa hora del día,
obviamente el resultado no puede pasar de 24 horas ...  ejemplo:

=# select time '13:00' + interval '13:00';
 ?column?
──────────
 02:00:00
(1 fila)

El resultado en este caso son las 2 am del día siguiente.


Lo que sí funciona es sumar interval, que representan duraciones de algo
(estuviste trece horas trabajando y después trece horas durmiendo):

=# select interval '13:00' + interval '13:00';
 ?column?
──────────
 26:00:00
(1 fila)

--
Álvaro Herrera                https://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services


--
Al_Hilario Company

Reply via email to