Daniel Falcão escreveu:
> Olá,
>
> Após tentar vários recursos do PostgreSQL, consegui realizar o
> procedimento através de uma função.
> Segue abaixo o código que utilzei:
>
> create or replace function diasUteis(pDataInicio date, pDataFim date)
> returns integer
> as $_$ declare
> _cont integer;
> _proxData date;
> begin
> _proxData := pDataInicio;
> _cont := 0;
>
> while _proxData <= pDataFim loop
> --se _proxData = fim de semana nao incremente _cont
> if (select extract(DOW from date_trunc('day',_proxData)) not
> between 1 and 5) is false then
>
> --aqui faco uma checagem na minha tabela de
> feriados/imprensados, se _proxData = feriado,
> --...
>
> _cont := _cont + 1;
> end if;
>
> --incremente _prox
> _proxData := _proxData + 1;
> end loop;
> return _cont;
> end $_$
> language 'plpgsql' volatile;
>
> --
>
> Grato pela atenção,
> Daniel Falcão
>
> On 10/24/07, *Daniel Falcão* <[EMAIL PROTECTED]
> <mailto:[EMAIL PROTECTED]>> wrote:
>
> Olá,
>
> Na realidade eu tenho uma tabela de feriados e imprensados, resolvi
> apenas
> simplificar a questão para ficar mais fácl o entendimento. Para
> saber se um
> determinado dia é sábado ou domingo, podemos usar o "extract (DOW)". :)
>
> Estou comecando a acreditar que o SQL nao oferece recursos para esse
> tipo
> de situacao, o melhor deve ser construir uma "function" em PL/PGSQL
> mesmo.
>
> []'s
> Daniel Falcão
>
>
> On 10/24/07, *sergio* <[EMAIL PROTECTED]
> <mailto:[EMAIL PROTECTED]>> wrote:
>
> Não sei se você vai chegar aos 100% de dias uteis, pois existem
> os feriados
> municipais por exemplo e até mesmo dias em que a empresa possa
> vir a não
> trabalhar. Eu tive que fazer algo semelhante. Optei por fazer
> uma rotina que
> retornasse os sabados e domingos e o usuario indicasse
> manualmente quais os
> dias que não foram trabalhados.
>
> ----- Original Message -----
> From: "Dickson Guedes" < [EMAIL PROTECTED]
> <mailto:[EMAIL PROTECTED]>>
> To: "Comunidade PostgreSQL Brasileira"
> <[email protected]
> <mailto:[email protected]>>
> Sent: Wednesday, October 24, 2007 1:52 PM
> Subject: Re: [pgbr-geral] Selecionando dias uteis durante
> determinado
> periodo
>
>
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> Daniel Falcão escreveu:
> > Olá, (...) 03. Preciso saber justamente a quantidade de "dias
> úteis
> > do mês", mesmo que o indivíduo não tenha comparecido em nenhum dia
> > (por exemplo, dias úteis no mês de 09/2007 = 20, no mês 10/2007 =
> > 23);
> >
> > PS: A função extract (DOW...) é bem interessante, estamos no
> > caminho certo.
> E o que fazer com os feriados? Você vai manter isso também de alguma
> forma?
>
Só para constar aqui vai uma expressão SQL que fornece os
dias úteis de um período. Considerei que existe uma tabela
com o registro dos feriados e outros dias que não devem ser
considerados (emendas, pontos facultativos, etc):
SELECT dia FROM
(SELECT ('2007-10-01'::date+s.a*'1 day'::interval) AS dia
FROM generate_series(0, '2007-10-31'::date -
'2007-10-01'::date, 1) AS s(a)) foo
WHERE EXTRACT(DOW FROM dia) BETWEEN 1 AND 5
EXCEPT
SELECT dia FROM tab_feriado;
Osvaldo
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral