[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