Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Luthien

Gerar Hora Aleatória dentro de um intervalo

Recommended Posts

Boa noite,

 

Preciso gerar uma hora aleatória entre a hora de entrada de um comprovante e 23:59:59. A função que fiz está gerando um monte de horas '00:00:00' e maiores que 23:59:59, como 35:00:00: 29:00:00. Não tenho ideia do pq disso estar acontecendo.

delimiter $
create procedure InsereDadosRecibo(idcomp int)
begin    
    declare vDataEntrada date;
    declare vHoraEntrada, vHoraSaida time;
    declare vIDCat int;
    declare vPlacacar varchar(45);
    declare vTaxaHoraria double;
select Comprovante.DataEntrada,
Comprovante.HoraEntrada,
Comprovante.HoraEntrada  + floor(time_to_sec(Comprovante.HoraEntrada) + (rand()*(86400-time_to_sec(Comprovante.HoraEntrada)))),
Comprovante.IDCategoria,
Comprovante.PlacaCarro
into vDataEntrada,vHoraEntrada,vHoraSaida,vIDCat,vPlacacar
from Comprovante where Comprovante.IDComprovante = idcomp;
select Categoria.TaxaHoraria
into vTaxaHoraria from Categoria where Categoria.IDCategoria = vIDCat;
insert into estacionamento.Recibo(DataEntrada,HoraEntrada,HoraSaida,IDCategoria,Placacarro,ValorPago)
values(vDataEntrada, vHoraEntrada, vHoraSaida ,vIDCat, vPlacaCar,(((time_to_sec(vHoraSaida)-time_to_sec(vHoraEntrada))/60)/30)*vTaxaHoraria);
end
$

86400 é 24 horas em segundos. Alguém poderia me ajudar? Obrigada!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Consegui resolver!

delimiter $
create procedure InsereDadosRecibo(idcomp int)
begin    
    declare vDataEntrada date;
    declare vHoraEntrada, vHoraSaida time;
    declare vIDCat int;
    declare vPlacacar varchar(45);
    declare vTaxaHoraria double;
select Comprovante.DataEntrada,
Comprovante.HoraEntrada,
sec_to_time(floor(time_to_sec(Comprovante.HoraEntrada) + (rand()*(86400-time_to_sec(Comprovante.HoraEntrada))))),
Comprovante.IDCategoria,
Comprovante.PlacaCarro
into vDataEntrada,vHoraEntrada,vHoraSaida,vIDCat,vPlacacar
from Comprovante where Comprovante.IDComprovante = idcomp;
select Categoria.TaxaHoraria
into vTaxaHoraria from Categoria where Categoria.IDCategoria = vIDCat;
insert into estacionamento.Recibo(DataEntrada,HoraEntrada,HoraSaida,IDCategoria,Placacarro,ValorPago)
values(vDataEntrada, vHoraEntrada, vHoraSaida ,vIDCat, vPlacaCar,(((time_to_sec(vHoraSaida)-time_to_sec(vHoraEntrada))/60)/30)*vTaxaHoraria);
end
$

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por Roberto S. Santos
      Boa noite devs.
      Poderiam me ajudar ?
      Estou querendo fazer o seguinte em um formulário PHP...
      O usuário deve cadastrar a sua data e horário do uso na churrasqueira e quando chegar nesta data e no horário final ele apaga os dados do cadastro desta reserva.
      Como posso fazer isto com PHP ?
      Temos...
      data reserva
      hora reserva  (hora inicial)
      hora final (já vai estar pré definida na base de dados)
      Banco de Dados : clientes
      Tabela : reserva
      Deus abençoe a todos.
       
    • Por Alessandro Bodão
      Fala rapaziada! Tudo legal?
       
      Estou desenvolvendo um site onde coloquei uma espécie de 'relógio' nele, onde as pessoas veem que horas são, os minutos e segundos vão atualizando automático. Até aí tudo certo...
       
      No header do site tem um título principal (h1) que começa dando bom dia. Como as pessoas vão acessar o site em horários diferentes, tive a ideia do texto atualizar automaticamente pra boa tarde ou boa noite, relativo ao intervalo de tempo do relógio, mas não sou tão bom ainda com javascript. 
    • Por unset
      Olá, estou com um probleminha aqui se alguém puder ajudar,
       
      Eu tenho a data em uma coluna no formato date 2020-12-01 e a hora em outra coluna no formato time 09:00:00
       
      Como eu posso saber se a data de hoje é maior do que data e hora dessas 2 colunas?
    • Por Alberto Nascimento
      Como faço para inserir data e horário no campo abaixo?
       
      <input name="horarioatual" id="horarioatual" style="width: 366px" type="text" />  
      Quando utilizava no PHP 5.3 funcionava com "echo", porém agora não esta mais quando estou utilizando o PHP 5.6
       
      <?php echo "$date"; ?>  
    • Por Highlander1901
      Senhores, buenas... não consigo efetuar esse SELECT, e já quebrei a cabeça pra dar certo. Podem me ajudar?
       
      SELECT
               "A"."CCUSTO" as "Célula",
               "A"."IDCONTR" as "Matrícula",
               "A"."NOME",
               "A"."SINDICATO",
               "A"."DESCEVENTO",
               "A"."LOCAL",
               (HOUR("A"."JAN") + (MINUTE("A"."JAN") / 60)) as "Mes Anterior",
               (HOUR("A"."FEV") + (MINUTE("A"."FEV") / 60)) as "Mes Atual",
               ((HOUR("A"."JAN") + (MINUTE("A"."JAN") / 60)) -(HOUR("A"."FEV") + (MINUTE("A"."FEV") / 60))) as "Crescimento",
               (MINUTE("A"."FEV") / 60) as "Minutos"
      FROM  "BD_HORAS" AS  "A" 
      WHERE     "A"."CCUSTO"  = '113'
       OR    "A"."CCUSTO"  = '432'
       
      Detalhes de erro:
      Qualquer uma das opções abaixo poderia ser a possibilidade para o erro:

      1. Poderia haver tipos incompatíveis de dados em um dos lados do operador comparador. Nesse caso, converta as colunas e tente novamente.

      2. Não há função correspondente ao nome  e argumento fornecidos. Você pode precisar adicionar conversões do tipo explícita.   Obs.: Sempre utilizei esse código, o que alterava era apenas o as colunas "JAN" e "FEV", dependendo do avanço dos meses.
       
      HEEEELP!
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.