[firebase-br] Stored Procedure para retornar dias úteis
Eduardo Bahiense
eduardo em icontroller.com.br
Ter Maio 27 19:20:31 -03 2008
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
>
Mais detalhes sobre a lista de discussão lista