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
