[firebase-br] RES: Stored Procedure para retornar dias úteis
Jose Aparecido da Silva
joseasilva em bol.com.br
Qua Maio 28 14:14:19 -03 2008
Eu também verifiquei o problema e só alterei a parte do código onde diz:
IF (SS IN (1,6)) THEN
para
IF (SS IN (1,7)) THEN
Ai funcionou tudo certo.
Parabéns pela rotina. Me ajudou muito em um problema que tinha para
resolver.
Abraços
Jose Aparecido da Silva
-----Mensagem original-----
De: lista-bounces em firebase.com.br [mailto:lista-bounces em firebase.com.br] Em
nome de Eduardo Bahiense
Enviada em: terça-feira, 27 de maio de 2008 19:21
Para: lista em firebase.com.br
Assunto: Re: [firebase-br] Stored Procedure para retornar dias úteis
Olá Carlos
Na minha base, as sextas aparecem como úteis.
SS é o dia da semana 1 domingo, 2 segunda ...
Observe que o FB retorna 2 em
SELECT EXTRACT(WEEKDAY FROM CAST('27.05.2008' AS DATE)) AS HOJE FROM
RDB$DATABASE
quando hoje é terça/3
então, no código abaixo ele adiciona 1 e testa, se SS for 1 ou 6
(domingo e sábado) 'F' else 'T'. talvez vc tenha tirado o +1 da sentença.
SS = EXTRACT(WEEKDAY FROM :D)+1;
IF (SS IN (1,6)) THEN
U = 'F';
ELSE
U = 'T';
Alguém pode achar que os campos DD, MM, YY e SS são redundantes, mas
como esta tabela é estática, abusamos de informações e índices para
performance. Nós a usamos, entre outras coisas, para calcular o próximo
dia útil de um vencimento, por exemplo, para verificar se vai haver
juros ou não.
Nosso Sistema é para gerenciamento de escolas, assim, LTV siginifica se
o dia é letivo ou não. Para outras aplicações, também é importante saber
se o dia sendo útil ou não, há expediente bancário. É assim que
orientamos nossos clientes. Se há, aula é letivo, se o banco abre, é útil.
Tenho bastante coisa relacionada a tratamento de datas, cálculo de
idades, 1º, nº dia útil etc. em queries. Qualquer dia que me sobrar um
tempo, quero publicar um artigo sobre isso.
Um ponto alto dessa procedure que te passei, é o cálculo automático da
páscoa e carnaval.
Abs
Eduardo
Carlos Andrade escreveu:
> Eduardo Bahiense,
>
>
>
> obrigado pela disponibilidade em responder minha pergunta! Deu certinho,
> criei a tabela e as duas Procedures. Minha dúvida é o seguinte: Eu
executei
> a Procedure “CLD_ANO” e com o parâmetro 2008, funcionou corretamente, mas
> porque que na sexta-feiras aparecem “F”, se sexta-feira é um dia útil? Num
> teria que ser aos sábados e domingos além dos feriados?
>
>
>
> Os registros ficaram assim:
>
>
>
> IDDATA DD MM YY SS LTV UTIL DESCRICAO
>
> 01/01/2008 1 1 2008 3 F F
> Confraternização Universal
>
> 02/01/2008 2 1 2008 4 T T
>
>
> 03/01/2008 3 1 2008 5 T T
>
>
> 04/01/2008 4 1 2008 6 F F
>
>
>
>
> Ah, outra dúvida é: O que são os campos: SS e LTV?
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>
______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
Para saber como gerenciar/excluir seu cadastro na lista, use:
http://www.firebase.com.br/fb/artigo.php?id=1107
Para consultar mensagens antigas: http://firebase.com.br/pesquisa
Mais detalhes sobre a lista de discussão lista