[firebase-br] Dias Uteis ...

Lucio - UniData® luciocobo em terra.com.br
Ter Ago 29 15:44:02 -03 2006


Funciona a sim
Tenho uma tabela de feriados
oou passo a data  para a procedure ela verifica  se o feriado esta
cadastrado
se for feriado  ela me traz  o proximo dia
é uma  forma de resolver o seu problema


CREATE TABLE FERIADOS (
    ID          INTEGER NOT NULL,
    DT_FERIADO  TIMESTAMP NOT NULL,
    NM_FERIADO  VARCHAR(25) NOT NULL
);


CREATE PROCEDURE RPROXIMA_FEIADO (
    DATA DATE)
RETURNS (
    R_DATA DATE)
AS
DECLARE VARIABLE W_DATA DATE;
begin
  /* Procedure responsavel por verificar se o
     dia da entrega é um feriado */
 W_DATA = NULL;
 FOR SELECT DT_FERIADO FROM FERIADOS
            WHERE DT_FERIADO >= :DATA ORDER BY DT_FERIADO
            INTO :W_DATA DO begin

   if (DATA = :W_DATA) then
       DATA = :data + 1;

    R_DATA = :DATA;
 end
 if (W_DATA IS NULL) then
    R_DATA = :DATA;
 suspend;
end


----- Original Message -----
From: "Firebird" <rubens.rodrigues em abrevo.com.br>
To: <lista em firebase.com.br>
Sent: Tuesday, August 29, 2006 3:08 PM
Subject: Re: [firebase-br] Dias Uteis ...


Entao vamos lá colegas, e me ajude na formação da query abaixo :

Exemplo :

Gostaria de fazer uma consulta ao banco de dados na tabela RDB$DATABASE
no qual ele me rertonasse todos os dias uteis do mes em questao (no caso
agosto - 8) e que nao tivesse dentro da tabela de feriados :


Eu me imaginei assim :

SELECT EXTRACT(DAYOFWEEK FROM ?????) AS "DIAUTIL" FROM RDB$DATABASE
WHERE "DIAUTIL" NOT IN (SELECT DIA FROM TABELAFERIADO);

Conto com a ajuda de vocês...


Rubens





Kléber Caneva escreveu:
> No caso da Pascoa não... Ele sempre cai de Domingo.
>
> Outros feriados que sempre caem de domingo são Dias dos Pais e Dia da
Mães.
>
> Carnaval, tb sempre cai numa Terça-feira  (Esse já é um outro problema..
> pois alguns lugares não é considerado feriado, e outros o mes inteiro é
> considerado...rs)
>
> Para outros é necessário uma tabela.
>
> []´s
>
> Kléber Caneva
>
>
> ----- Original Message -----
> From: "Renan de Oliveira" <renan em safetech.inf.br>
> To: "FireBase" <lista em firebase.com.br>
> Sent: Tuesday, August 29, 2006 2:09 PM
> Subject: Re: [firebase-br] Dias Uteis ...
>
>
> ta certo, e quando a páscoa cair em uma quinta-feira, podemos fazer
> feriadao, ou nao. quando for feriadão, nao trabalharemos na sexta, quem
> defini se sera feriadao ou nao, eh o sindicato da categoria, porem se for,
> como folgaremos a sexta em questao, em algum outro feriado do ano, que
fica
> em algum outro mes, trabalharemos um dia que será feriado nacional ou
> regional, novamente de acordo com o q o sindicato definir. portanto, nesse
> exemplo, o mes de abril terá um dia util a menos e algum outro mes do ano
um
> dia util a mais do que o previsto, portanto a unica forma eh um cadastros
de
> feriados;
>
>
> Renan de Oliveira
> Safetech Informática
> (51) 3529-3870
> ----- Original Message -----
> From: "Otto Fuchshuber" <ottofuch em terra.com.br>
> To: <renan em safetech.inf.br>; "FireBase"
<lista-JZX6CTs6PlE39yzSjRtAkw em public.gmane.org>
> Sent: Tuesday, August 29, 2006 1:37 PM
> Subject: Re: [firebase-br] Dias Uteis ...
>
>
>> Para calcular o dia da pásca em cada ano existe a seguinte rotina:
>>
>> Fonte: Revista Scientific American, Marco 2001, pagina 73
>> Escolha um ano do calendario Gregoriano e chame-o de x. Para determinar
>> a data da Pascoa execute os seguintes 10 calculos:
>>
>>   1. Dividir x por 19 para obter um quociente (que vamos ignorar) e um
> resto
>>      A. Esta e' a posicao do ano no ciclo lunar de 19 anos (A+1 e' o
> numero
>>      ouro do ano)
>>   2. Dividir x por 100 para obter um quociente B e um resto C
>>   3. Dividr B por 4 para obter um quociente D e um resto E
>>   4. Dividr 8B + 13 por 25 para obter um quociente G e um resto que vamos
>> ignorar
>>   5. Dividir 19A + B - D - G + 15 por 30 para obter um quociente (que
> vamos
>>      ignorar) e um resto H (o Epacs do ano e' 23-H quando H for menor do
> que
>>      24 e 53-H de outro modo)
>>   6. Dividir A + 11H por 319 para obter um quociente M e um resto (que
> vamos
>>      ignorar)
>>   7. Dividir C por 4 para obter um quociente J e um resto K
>>   8. Dividir 2E + 2J - K - H + M + 32 por 7 para obter um quociente (que
>> vamos
>>      ignorar) e um resto L
>>   9. Dividir H - M + L + 90 por 25 para obter um quociente N e um resto
> (que
>>      vamos ignorar)
>>  10. Dividir H - M + L + N + 19 por 32 para obter um quociente (que vamos
>>      ignorar e um resto P
>>
>>  O domingo de Pascoa e' o P-esimo dia do N-esimo mes (N pode ser ou 3
para
>>  marco, ou 4 para abril). A letra dominical pode ser achada em
> dividindo-se
>>  2E + 2J - K por 7 e tomando-se o resto (um resto igual a 0 e' a letra A,
>>  1 e' equivalente a B, e assim por diante).
>>
>> Experimentando este metodo para o ano x = 2001 obtemos (1)A=6;
(2)B=20,C=1
>> (3)D=5,E=0;(4)G=6;(5)H=18;(6)M=7;(7)J=0,K=1;(8)L=6;(9)N=4;(10)P=15
>>
>> Em 2001 a páscoa caiu em 15/04/2001.
>> Em 2007 será no dia 08/04/2001
>> Em 2010 será no dia 04/04/2010
>> No ano 34 DC caiu em 26/03/2006
>> Antes disto não havia páscoa.
>>
>> Segundo a Wikipedia,
>> http://pt.wikipedia.org/wiki/P%C3%A1scoa
>> "A Páscoa é celebrada no primeiro Domingo após a primeira Lua Cheia que
>> ocorre depois do equinócio da Primavera"
>> Lá existem outros algoritmos de cálculo, talvez menos exatos do que o
>> apresentado na Cientific American
>>
>> Lá vem a turma da cultura ... {:-)
>> Se quiser, lhe mando em PVT um pequeno programa em Visual Basic 6 que
> efetua
>> todos os cálculos.
>>
>> Otto
>>
>> ----- Original Message -----
>> From: "Renan de Oliveira" <renan em safetech.inf.br>
>> To: "FireBase" <lista em firebase.com.br>
>> Sent: Tuesday, August 29, 2006 10:51 AM
>> Subject: Re: [firebase-br] Dias Uteis ...
>>
>>
>> Sugiro que voce tenha uma tabela com os cadastros de feriados, do
> contrário
>> sera complicado, pois apesar de normalmente os feriados terem dias fixos,
> a
>> empresa pode optar por feriadões, férias, etc. depois tu monta um sql que
> te
>> tras os dias que nao forem sabado e domingo, e faz um join com essa
tabela
>> pra verificar se mesmo nao sendo sabado nem domingo é feriado ou nao
>>
>>
>> Renan de Oliveira
>> Safetech Informática
>> (51) 3529-3870
>> ----- Original Message -----
>> From: "Firebird" <rubens.rodrigues em abrevo.com.br>
>> To: <lista em firebase.com.br>
>> Sent: Tuesday, August 29, 2006 10:33 AM
>> Subject: [firebase-br] Dias Uteis ...
>>
>>
>> Prezados Colegas,
>>
>> É possivel via SQL eu conseguir a qtde de dias úteis num determinado mês?
>>
>> Obrigado
>>
>> Rubens
>>
>>
>> ______________________________________________
>> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
>> Para editar sua configuração na lista, use o endereço
>> http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
>> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>>
>>
>>
>> ______________________________________________
>> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
>> Para editar sua configuração na lista, use o endereço
>> http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
>> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>>
>> Esta mensagem foi verificada pelo E-mail Protegido Terra.
>> Scan engine: McAfee VirusScan / Atualizado em 28/08/2006 / Versão:
>> 4.4.00/4839
>> Proteja o seu e-mail Terra: http://mail.terra.com.br/
>>
>>
>>
>>
>>
>>
>
>
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para editar sua configuração na lista, use o endereço
> http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>
> E-mail classificado pelo Identificador de Spam Inteligente Terra.
> Para alterar a categoria classificada, visite
>
http://mail.terra.com.br/protected_email/imail/imail.cgi?+_u=kdcc&_l=1,11568
71390.939942.7795.alcuta.terra.com.br,8707,Des15,Des15
>
> Esta mensagem foi verificada pelo E-mail Protegido Terra.
> Scan engine: McAfee VirusScan / Atualizado em 29/08/2006 / Versão:
> 4.4.00/4840
> Proteja o seu e-mail Terra: http://mail.terra.com.br/
>
>
>
>
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para editar sua configuração na lista, use o endereço
http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>


______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
Para editar sua configuração na lista, use o endereço
http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
Para consultar mensagens antigas: http://firebase.com.br/pesquisa





Mais detalhes sobre a lista de discussão lista