Jump to content
asacap1000

Calculo de datas e horas

Recommended Posts

Galera preciso de uma ajuda, não sei mais nem como procurar a cabeça está dando nó kkkk.

Tenho projeto que estará controlando o tempo de acesso no estabelecimento impondo um limite de 100 minutos.

Dentro do mesmo dia estou conseguindo realizar os calculos normais, porém se o usuário entrar 23:00 ele terá que sair no máximo às 00:40.

O horário eu consegui montar conforme o select abaixo a data mantém a mesma da entrada.

select aces.seqreg SEQUENCIA,
       aces.diracc SENTIDO,
       
	   aces.horacc MINUTOS, --acesso em minutos 
	   (aces.horacc + 100) LIMITE, --limite de acesso foi adicionado mais 100 minutos

	   CONVERT(varchar(2), Day(aces.datacc)) + '/' +
       CONVERT(varchar(2), MONTH(aces.datacc)) + '/' +
       CONVERT(varchar(4), Year(aces.datacc)) + '  ' +
       right( '00' + cast(aces.horacc / 60 as varchar), 2) + ':' +
       right( '00' + cast(aces.horacc - ((aces.horacc / 60) * 60) as varchar), 2 ) AS HORA,--data e hora  de entrada

	CONVERT(varchar(2), Day(aces.datacc)) + '/' +
    CONVERT(varchar(2), MONTH(aces.datacc)) + '/' +
    CONVERT(varchar(4), Year(aces.datacc)) + '  ' +
    right( '00' + cast( ((aces.horacc + 100)%1440)/60 as varchar), 2) + ':' +
    right( '00' + cast(((aces.horacc + 100)%1440)%60 as varchar), 2 ) 'SAIDA', --data e hora que deve sair
	
	Convert(Char(5),GetDate(),114) ATUAL
   
  from kansas.kansas.r070ara aces
  LEFT JOIN kansas.kansas.r090mvi mv
    on aces.numcra = mv.numcra
   and aces.numdoc = mv.numdoc
 where CONVERT(DATETIME, CONVERT(NVARCHAR(10), aces.datacc, 103), 103) >=
       CONVERT(DATETIME, '29/09/2018', 103)
   and CONVERT(DATETIME, CONVERT(VARCHAR(10), aces.datacc, 103), 103) <=
       CONVERT(DATETIME, '29/09/2018', 103)
   and (aces.coddsp like '1')
   and aces.numdoc = '325605397'
 order by aces.seqreg, aces.nompes, aces.coddsp

O problema está nesta parte do select:

 

CONVERT(varchar(2), Day(aces.datacc)) + '/' +
    CONVERT(varchar(2), MONTH(aces.datacc)) + '/' +
    CONVERT(varchar(4), Year(aces.datacc)) + '  ' +
    right( '00' + cast( ((aces.horacc + 100)%1440)/60 as varchar), 2) + ':' +
    right( '00' + cast(((aces.horacc + 100)%1440)%60 as varchar), 2 ) 'SAIDA', --data e hora que deve sair

A parte de data ele não traz a data seguinte na imagem abaixo a saída deveria ser 30/09/2018 01:27

 

image.png.99e360d4568aa033ae2a5b1a3396e321.png

 

Alguém poderia me dar uma força tenho que entregar essa semana este projeto no trabalho e está muito punk a bagaça...

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By FabianoSouza
      Estou usando SQL dinâmico num select. Até aqui tudo bem. Funciona.
       
      Agora preciso pegar alguns campos desse select e passar para variáveis.
      Na forma normal seria assim (isso funciona)
      SELECT @checkAcesso = COUNT(*), @contAcesso = campo2 FROM tab ... Estou tentando adaptar para conseguir isso acima, mas num SELECT dinâmico. Mas sem sucesso.
      SET @sql = 'SELECT ' SET @sql = @sql + @variavel + '= T.meuCampo ' SET @sql = @sql + ' FROM tabela AS T ' EXEC(@sql) Dessa forma simplesmente não exibe nada.
       
      Help!
    • By Wanderson Moreira
      Boa tarde
      Alguém poderia me ajudar com uma situação?
       
      Estou tentado comparar datas para me retornar 3 situações: Vencendo, Vencido, e Ativo
      porem acredito que o formato delas estejam erradas, pois ao compará-las o valor retorna errado
       
      $data = date_create("30-07-2020"); $vencimento = date_format($data, "d-m-Y"); $dataHoje = date("d-m-Y"); $dataVencer = date('d-m-Y', strtotime('+15 days')); if($vencimento > $dataVencer){echo 'Ativo';}  
      no exemplo estou comparando se 30-07-2020 for maior > 07-08-2020 exibir o texto "Ativo"
      Porem 30-07-2020 não é maior do que 07-08-2020 e mesmo assim o valor retornado esta sendo "ativo"
       
       
       

       
       
    • By Wanderson Moreira
      bom dia, 

      preciso fazer um select e verificar se o ID do usuário logado existe em em uma coluna do banco de dados
      por exemplo

      ID Usuario: 6
      coluna do banco: 1, 3, 5, 16
       
      O problema é que se eu fizer o select com LIKE ele considera o numero 16 como 1 e 6 invés de considerar um numero só, com isso o usuário 6 acaba sendo incluso no select indevidamente
       
      alguém poderia me ajudar?
    • By neto_celino
      Estou usando o seguinte código para somar um SELECT, mas cheguei em um determinado ponto que travei.
       
      Tenho 400 registros na DB e tenho que somar alguns registros somente. Ou seja, somar o (valortotal) de alguns ID's somente. 
      É possivel e por onde vou ? rs.
      <?php $subtotal = "SELECT SUM(valortotal) from tbl_compras WHERE id = VariosIdAqui"; $resultado = mysql_query($subtotal); $registro = mysql_fetch_row($resultado); echo number_format($registro[0], 2, ',', ' ') ;  ?>      
    • By Diego-SLP
      Bom dia,
       
      Teria como eu fazer um UPDATE na minha base colocando através de um FORM o VALOR_UNITARIO sendo que a QUANTIDADE já tenho na base de dados, e assim, atualizar o campo VALOR FINAL já? 
       
      Vou atualizar varios registros de uma vez.
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.