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" > <pgbr-geral@listas.postgresql.org.br > <mailto:pgbr-geral@listas.postgresql.org.br>> > 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 pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral