Em 12 de janeiro de 2012 17:10, Flávio Alves Granato <[email protected]> escreveu: > Senhores, > > Estou com uma dúvida se estou no caminho certo para somar as horas de > um sistema que estou dando manutenção. > Tenho esta estrutura: > > CREATE TABLE tempos > ( > usuario_cpf character varying(11) NOT NULL, > projeto_nome character varying NOT NULL, > projeto_datainicial date NOT NULL, > tempo_entrada timestamp without time zone NOT NULL, > tempo_saida timestamp without time zone, > comentario text, > tipo_tempo character varying, > CONSTRAINT pk_tempo PRIMARY KEY (usuario_cpf , projeto_nome , > projeto_datainicial , tempo_entrada ), > CONSTRAINT "FK_tempo_tipo-tempo" FOREIGN KEY (tipo_tempo) > REFERENCES tipo_tempo (nome) MATCH SIMPLE > ON UPDATE NO ACTION ON DELETE NO ACTION, > CONSTRAINT "FK_tempo_usuario" FOREIGN KEY (usuario_cpf) > REFERENCES usuarios (cpf) MATCH SIMPLE > ON UPDATE NO ACTION ON DELETE NO ACTION > ) > > E estou utilizando a query abaixo, mas não sei se esta correto. A > pessoa pode entrar com um ou mais intervalo de tempo trabalhado no > mesmo dia e tenho > que retornar a quantidade de horas mesmo se por exemplo a pessoa > começar às 23:00 e parar às 06:00 do próximo dia. > Será que é por este caminho mesmo? > > SELECT SUM(AGE(tempo_saida, tempo_entrada)) > FROM tempos > WHERE EXTRACT(DAY FROM tempo_entrada) = EXTRACT(DAY FROM tempo_saida) > EXTRACT(MONTH FROM tempo_entrada) = EXTRACT(MONTH FROM tempo_saida) > EXTRACT(YEAR FROM tempo_entrada) = EXTRACT(YEAR FROM tempo_saida) > AND EXTRACT(YEAR FROM tempo_entrada) = 2012
Mas se a saída pode ser no dia seguinte não tem sentido você exigir que as datas de entrada e saída sejam iguais. Osvaldo _______________________________________________ pgbr-geral mailing list [email protected] https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
