2012/7/23 Dilson Tomé <[email protected]>

> Boa tarde Srs(as).
>
> Estou com uma questão que não consigo solucionar.
>
> Segue a tabela:
>
>   Table "public.horarios"
>
>  *Column* *Type* *Modifiers*  entrada0 time without time zone    saida0 time
> without time zone    entrada1 time without time zone    saida1 time
> without time zone
>
> Segue minha query para pegar o total de horas:
>
> SELECT TO_CHAR(((saida0::TIME - entrada0::TIME)+(saida1::TIME -
> entrada1::TIME)), 'HH24:MI:SS') from horarios;
>   *to_char*  07:45:05
>
>
> Gostaria de uma forma de multiplicar esse resultado por um númeor inteiro,
> por exemplio: 07:45:05 * 50.
> E retornar um valor inteiro, logicamente.
>
> Existe essa possibilidate?
>


Sim, e vai depender da unidade que você espera, usando o EXTRACT(EPOCH FROM
<interval>), sendo <interval> um tipo de dados INTERVAL, você vai obter a
quantidade de segundos daquele intervalo de tempo.

Exemplo:

SELECT TO_CHAR(((saida0::TIME - entrada0::TIME)+(saida1::TIME -
entrada1::TIME)), 'HH24:MI:SS'),
EXTRACT(EPOCH FROM ((saida0::TIME - entrada0::TIME)+(saida1::TIME -
entrada1::TIME))) * 50
FROM horarios;

Te daria o resultado em segundos * 50. Se quiser em horas, é só dividir por
3600:

SELECT TO_CHAR(((saida0::TIME - entrada0::TIME)+(saida1::TIME -
entrada1::TIME)), 'HH24:MI:SS'),
(EXTRACT(EPOCH FROM ((saida0::TIME - entrada0::TIME)+(saida1::TIME -
entrada1::TIME))) / 3600.0) * 50
FROM horarios;

Atenciosamente,
--
Matheus de Oliveira
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a