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

Responder a