Ir para conteúdo

POWERED BY:

Arquivado

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

wellintton

pesquisa envolvendo diferença e somatório de horas

Recommended Posts

Olá pessoal, eu estou com um problema, eu quero somar a diferença entre as Horas de entrada e de saída de um determinado Usuario, como segue na tabela abaixo. ----------------------------------- id_usuario hora_in hora_out ----------------------------------- 1 10:00 10:15 -> 00:15:00 1 10:15 10:25 -> 00:10:00 1 10:25 10:35 -> 00:10:00 ----------------------------------- Eu estava usando a função TIMEDIFF com um SUM mais estava retornando (ZERO) onde a resposta seria: ------------------------ id_usuario Percuso ------------------------ 1 00:35:00 ------------------------ Usando GROUP BY para id_usuario. Serah que alguem pode me ajudar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá wellintton,Também estou com o mesmo problema.Como se usa esse timediff? Qual é a sintaxe?Estou usando select timediff... mas depois nao sei como continuar.A estrutura da minha tabela é igual a sua. Hora In Hora Out.Obrigado, :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu fiz uma função para calcular as diferenças entre horas, inclusive datas diferentes, pois pode-se ocorrer uma utilização de um dia para outro por exemplo....ai vaiEspero ter ajudado[]´sBobr@function Calcula_Dif_Hora($inicio,$fim,$data,$dataf,$dif) { global $dif; if (!is_array($inicio)) { $inicio = explode(":",$inicio); } if (!is_array($fim)){ $fim = explode(":",$fim); } if (!is_array($data)){ if (strstr("-",$data{4})){ $data = explode("-",$data); } else if (strstr("-",$data{2})) { $aux = explode("-",$data); $data = array ($aux[2],$aux[1],$aux[0]); } } else { if (strlen($data[0]) == 2){ $data = array ($data[2],$data[1],$data[0]); } } if (!is_array($dataf)){ if (strstr("-",$dataf{4})){ $dataf = explode("-",$dataf); } else if (strstr("-",$dataf{2})){ $aux2 = explode("-",$dataf); $dataf = array ($aux2[2],$aux2[1],$aux2[0]); } } else { if (strlen($dataf[0]) == 2){ $dataf = array ($dataf[2],$dataf[1],$dataf[0]); } } if ($inicio[0] == '00') $inicio[0]='24'; if ($fim[0] == '00') $fim[0]='24'; $time_inicio = (($inicio[0]*60)*60) + ($inicio[1]*60) + $inicio[2]; $time_fim = (($fim[0]*60)*60) + ($fim[1]*60) + $fim[2]; $t[0] = floor(($time_fim - $time_inicio) / 60); $t[1] = floor((($time_fim - $time_inicio) / 60) / 60); $h = $t[1]; $m = $t[0] - ($t[1]*60); if ($data[0] != $dataf[0]) { $aux2 = ($dataf[0] - $data[0])*365; $valor = $valor+$aux2; } if ($data[1] != $dataf[1]){ $aux2 = ($dataf[1]-$data[1])*30; $valor = $valor+$aux2; } if ($data[2] != $dataf[2]) { $aux2 = $dataf[2]-$data[2]; $valor = $valor+$aux2; } $t[1] = $t[1]+$valor*24; //$valor = numero de dias a mais if ($t[1] >= '24') { //mais de 24 horas if ($fim[0] == '24') { //se hora final for 24:?? $h=$t[1]-24; } else { $h=$t[1]; } } if ($h < 0) { $h=$t[1]; } if ($h < 10) $h = "0$h"; if ($m < 10) $m = "0$m"; $dif="$h:$m"; return $dif; }

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

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