[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