Ir para conteúdo
FabianoSouza

Somar horas

Recommended Posts

Possuo a tab TURMAS e EVENTOS.

Preciso que o meu select existente, que seleciona registros da tab TURMAS (que faz JOIN com a tab EVENTOS), faça soma de horas dos EVENTOS associados ao item da tab TURMAS.

SELECT,
Campo1, Campo2, Campo...

EVT.dataInicial, EVT.dataFinal

FROM tabTURMAS

LEFT JOIN
tabEventosTreina AS EVT
...

Creio que a lógica seria essa:

-pegar a diferença entre os campos EVT.dataInicial, EVT.dataFinal

-totalizar essas diferenças para todos os eventos que estiverem associados pelo relacionamento de chaves PK e FK que existem.

-entregar o resultado dessa operação para cada item da consulta.

 

Com esse código abaixo (de testes), consigo retornar a diferença de horas entre as duas datas.

Mas não consigo evoluir. Acredito que precisaria isolar os minutos, somá-los para ver quantas horas totalizam, somar as horas, e por fim, juntar com a soma dos minutos.

 

DECLARE @datainicial datetime, @dataFinal datetime
DECLARE @qtde_Dif_Horas VARCHAR(10)

SET @datainicial = '2023/16/11 19:00:00'
SET @dataFinal = '2023/16/11 22:30:00'


(select  @qtde_Dif_Horas = CONVERT(varchar(10), @dataFinal - @datainicial, 108))
SELECT @qtde_Dif_Horas AS 'contHoras'

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sql Server é diferente , em Oracle neste casos reduzo ao menor "tempo" , no caso do type DATE segundos, com isto depois posso fazer cálculos (médias etc) e depois posso exibir , convertendo, para dias,horas etc.

 

https://learn.microsoft.com/pt-br/sql/t-sql/functions/datediff-transact-sql?view=sql-server-ver16

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por Diego-SLP
      Bom dia,
       
      Estou fazendo uma tela de relatorios de registro de ponto e não estou conseguindo totalizar as horas conforme trago do banco de dados, se alguem puder me ajudar.
       
      SELECT p.cod_obra,f.nome,o.obra, TIME_FORMAT(SEC_TO_TIME(SUM(TIME_TO_SEC(p.totalhora))),'%H:%i') AS hora, TIME_FORMAT(SEC_TO_TIME(SUM(TIME_TO_SEC(p.totalhoraextra))),'%H:%i') AS horaextra, f.funcao FROM rh_pontoFuncionario p, rh_funcionario f, rh_obra o WHERE p.data BETWEEN '2020/10/01' AND '2020/11/20' AND p.cod_obra = '20056' AND p.cod_func = f.cod AND p.cod_obra = o.cod GROUP BY p.cod_obra, f.nome Essa query me traz COD_OBRA,NOME,OBRA,HORA,HORAEXTRA,FUNCAO e eu gostaria de TOTALIZAR o campo HORA e HORAEXTRA somando todas as linhas mas não consigo
    • Por 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, ',', ' ') ;  ?>      
    • Por Mfenoglio
      Galera boa tarde, estou com o seguinte problema.
      Eu quero fazer uma conta entre duas tabelas se for PAGO ou RECEBIDO.
      Minha query

       
      SELECT F10_CODBANCO, F10_VALOR, F0S5_RECPAG, SUM(S05_VALOR) AS SVALMOV, G27_N35OMEBAN5CO FROM F10, F05, G27 WHERE FS10_GRUPO = F05_GRUPO AND F10_EMPESA = F0X5_EMPRESA AND F_FILIAL d= F05_FILIAL AND Fa10_CGODBANCO = F05_BANCO AXND F10_GRUPO = G27_G AND F1MPARESA = G27_EAMPRESDA AND F10_FILIAL = G27_FILIAL AND F10_CODBANCO = G27_CODIGO AND FZ10_VALOR <> 0 GROUAP BYA F10_CODCBANCO, FA10_VALOR, F05_RECGHPAG, G27_NHOMEBANAO AORDER BY F10D_CODANCFO  
      o que eu quero é o seguinte, Se F05_RECPAG for igual a P então faça F10_VALOR - SUM(F05_VALOR) AS VALMOV .... agora se for igual a R faça F10_VALOR + SUM(F05_VALOR) AS VALMOV.
       
      Agradeço quem puder me ajudar. vlw
    • Por device
      Olá pessoal. Bom dia...
      Preciso somar campos de uma tabela, mas de acordo com critérios que estão na base de dados
      Lá tenho lançado valores como segue.
      MES - ANO - ITEM - VALOR
      O campo mes vai de Janeiro a dezembro, setados em Combobox
      O campo ANO, ITEM selecionados tb em ComboBox e Valor preenchido em campo Edit
      Agora é o problema. 
      Preciso filtrar a soma de acordo com o MES, ANO e ITEM e somar seus valores que estão nos campos Edit
      Por exemplo. 
      Somar todos os Valores, de acordo com o MES, ANO e ITEM (farmácia ou mercado) por exemplo e colocar em uma var.
      O Combobox ITEM, assim como mes de 30 dias e Ano de 2019 à 20xx, tem itens, como Farmacia, mercado, medico, dentista, exames, etc    
      Alguma santa alma poderia dar uma ajuda?  
    • Por brunoogm
      Pessoal possuo o seguinte código em php :
       
      echo "<input type='radio' name='order-shipping' id='flat' /><label for='flat'>Delivery (R$ 15,00)</label><br />";
      echo "<input type='radio' name='order-shipping' id='free' /><label for='free'>Retirada (R$ 0,00)</label>";
      echo "</p></li>";
                                                          
      echo "<li><p class='strong'>Valor Total</p><p class='strong'>R$ " . $total[0] ."</p></li>";
      echo "<input type='hidden'  name='Total' readonly value='" . $total[0] . "'>";
       
      Preciso desenvolver o código de uma maneira que ao selecionar o radio buttom, o valor de delivery ou de retirada seja somado a variável $total.
       
      Alguem tem alguma dica de como fazer isso ?
×

Informação importante

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