RE: sumar horas y minutos

From: Micky Khan <mcanchas(at)hotmail(dot)com>
To: Alvaro Herrera <alvherre(at)2ndquadrant(dot)com>, Jaime Casanova <jaime(dot)casanova(at)2ndquadrant(dot)com>
Cc: POSTGRES <pgsql-es-ayuda(at)postgresql(dot)org>, "pgsql-es-ayuda(at)lists(dot)postgresql(dot)org" <pgsql-es-ayuda(at)lists(dot)postgresql(dot)org>
Subject: RE: sumar horas y minutos
Date: 2018-11-22 15:12:51
Message-ID: HE1P190MB0475998C3EA1F1C46153E4E1D7DB0@HE1P190MB0475.EURP190.PROD.OUTLOOK.COM
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

"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 <alvherre(at)2ndquadrant(dot)com>
Enviado: jueves, 22 de noviembre de 2018 14:59
Para: Jaime Casanova
Cc: MKHotmail; POSTGRES; pgsql-es-ayuda(at)lists(dot)postgresql(dot)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

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Alvaro Hilario 2018-11-22 15:33:47 Re: sumar horas y minutos
Previous Message Alvaro Herrera 2018-11-22 14:59:50 Re: sumar horas y minutos