[firebase-br] SP Fracionando hora

Gustavo Moda gustavo.moda em gmail.com
Sex Set 18 08:21:05 -03 2009


Olá,

Sim é possível, campos TIME, TIMESTAMP podem ser somados segundos.
Abaixo um exemplo.

execute block
returns (
   tarefa integer,
   hora_inicial_tarefa time,
   hora_final_tarefa time,
   total_tarefas integer,
   segundos float ,
   segundos_cada_tarefa float
)
as
declare variable numero_tarefas integer;
declare variable hora_inicial time;
declare variable hora_final time;
begin
    -- pode ser passado por parametro na SP ou ler do banco
    hora_inicial = '08:00:00'; -- hora inciial de trabalho
    hora_final = '08:10:00'; -- prazo final
    total_tarefas = 10;


    -- calcular a quantidade de segundos que temos para realizar a rterefa
    segundos = hora_final - hora_inicial;

    -- ver o percentual que cada tarefa vai usar.
    numero_tarefas = total_tarefas -1 ; -- faz necessário, pq a hora inicial
é usada para a primeira tarefa
    if (numero_tarefas < 1) then numero_tarefas  = 1; -- previnindo divisão
por zero
    segundos_cada_tarefa = segundos / cast( numero_tarefas as float) ;


    -- calculando
    tarefa =1;
    hora_inicial_tarefa = hora_inicial;
    hora_final_tarefa = hora_inicial;
    while (1=1)
    do begin
        if (tarefa > total_tarefas) then leave;
        hora_final_tarefa = hora_final_tarefa + segundos_cada_tarefa;
        suspend;
        hora_inicial_tarefa = hora_inicial_tarefa + segundos_cada_tarefa;
        tarefa = tarefa + 1;
    end

end



2009/9/17 Marcelo Moreira <marcelomoreira.souza em gmail.com>

> Pessoal,
> Boa tarde!
>
> Trabalhando com o Firebird 2.1 tenho um cadastro de tarefas onde tenho um
> campo HORA do tipo TIME onde informo o horario que a tarefa deve ser
> executada. O que acontece é que sempre eu cadastro varias tarefas ao mesmo
> tempo e o que eu preciso é distriubir o horario de execução de cada tarefa
> em um intervalo de horario.
> Vou tentar explicar: Preciso fazer o cadastro de 10 tarefas e o horio para
> distribuicao destas tarefas vai ser de 08:00 ate as 08:10. O que o sistema
> precisa fazer neste caso entao é cadastrar as tarefas com os seguintes
> horarios:
> 08:00 - 08:01 - 08:02 - 08:03 - 08:04 - 08:05 - 08:06 - 08:07 - 08:08 -
> 08:09
> Ou seja ele cadastrou uma tarefa a cada minuto uma vez que eram 10 tarefas
> no intervalo de 10 minutos
> O que eu tenho certeza que vai acontecer é o sistema ter de cadastrar por
> exemplo 1000 tarefas em um intervalo de 60 minutos.
>
>
> Minha duvida é: Usando uma SP é possivel fazer o que eu preciso?
> Se sim alguem pode me indicar o caminho?
>
> Muito obrigado pela atenção!
>
> Abs.
>
> --
> Marcelo Moreira
> (31) 8420-2723
> E-mail / MSN: marcelomoreira.souza em hotmail.com
> E-mail: marcelomoreira.souza em gmail.com
> Skype: marcelomoreira.souza
> ______________________________________________
> 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