DannyND 1 Denunciar post Postado Fevereiro 15, 2012 Olá galera, Tenho registros das horas que um veículo está rodando por dia e preciso retornar quantas vezes ultrapassa 8h o dia. A query que retorna as horas dia-a-dia imprimi as seguintes informações: data: 2012-01-02 - hora: 09:01:08 - min: - máx: data: 2012-01-02 - hora: 09:01:08 - min: - máx: data: 2012-01-02 - hora: 09:04:10 - min: - máx: data: 2012-01-02 - hora: 09:04:10 - min: - máx: data: 2012-01-02 - hora: 18:12:35 - min: - máx: data: 2012-01-02 - hora: 18:12:35 - min: - máx: data: 2012-01-02 - hora: 18:15:36 - min: - máx: data: 2012-01-02 - hora: 18:15:36 - min: - máx: Preciso saber quantas horas o veículo ficou rodando por dia. Alguém tem idéia do que posso fazer? Compartilhar este post Link para o post Compartilhar em outros sites
cristian_web 15 Denunciar post Postado Fevereiro 15, 2012 Não entendi bem... Oque você quer saber? a diferença de horário em um unico dia? data: 2012-01-02 - hora: 09:01:08 - min: - máx: data: 2012-01-02 - hora: 09:01:08 - min: - máx: data: 2012-01-02 - hora: 09:04:10 - min: - máx: data: 2012-01-02 - hora: 09:04:10 - min: - máx: data: 2012-01-02 - hora: 18:12:35 - min: - máx: data: 2012-01-02 - hora: 18:12:35 - min: - máx: data: 2012-01-02 - hora: 18:15:36 - min: - máx: data: 2012-01-02 - hora: 18:15:36 - min: - máx: 18:15:36 - 09:01:08 = 09:14:28 Compartilhar este post Link para o post Compartilhar em outros sites
DannyND 1 Denunciar post Postado Fevereiro 15, 2012 Não entendi bem... Oque você quer saber? a diferença de horário em um unico dia? data: 2012-01-02 - hora: 09:01:08 - min: - máx: data: 2012-01-02 - hora: 09:01:08 - min: - máx: data: 2012-01-02 - hora: 09:04:10 - min: - máx: data: 2012-01-02 - hora: 09:04:10 - min: - máx: data: 2012-01-02 - hora: 18:12:35 - min: - máx: data: 2012-01-02 - hora: 18:12:35 - min: - máx: data: 2012-01-02 - hora: 18:15:36 - min: - máx: data: 2012-01-02 - hora: 18:15:36 - min: - máx: 18:15:36 - 09:01:08 = 09:14:28 Então, preciso pegar a hora inicial e a final. É exatamente isso que preciso, mas não posso fazer direto na query com MIN() e MAX() porque ela retornar as datas e não deu certo. // Verifica Excesso 8h $query_sub = "select rlog_posicoes.dt_posicao, rlog_posicoes.hr_posicao from rlog_posicoes where rlog_posicoes.dt_posicao >= '2012-01-02' and rlog_posicoes.dt_posicao <= '2012-01-02' and rlog_posicoes.id_ignicao = '1' and rlog_posicoes.id_modulo = '$id_modulo'"; $result_sub = mysql_query($query_sub); while($row_sub = mysql_fetch_object($result_sub)): #como pegar a hora inicial e final retornadas?? endwhile; Compartilhar este post Link para o post Compartilhar em outros sites
cristian_web 15 Denunciar post Postado Fevereiro 15, 2012 A data e a hora estão gravadas em que formato? date, varchar? Compartilhar este post Link para o post Compartilhar em outros sites
DannyND 1 Denunciar post Postado Fevereiro 15, 2012 A data e a hora estão gravadas em que formato? date, varchar? Data como date e hora como time. Mas não importa porque eu tenho que fazer o tratamento depois que retornar da query. Compartilhar este post Link para o post Compartilhar em outros sites
Maiia Bakhova 0 Denunciar post Postado Fevereiro 15, 2012 Anything is possible Compartilhar este post Link para o post Compartilhar em outros sites
Luis Paullo 47 Denunciar post Postado Fevereiro 15, 2012 $values = array('09:01:08 ','09:01:08 ','09:01:08','09:01:08 ','18:15:36'); $total = array_pop($values); $res = $total - $values[0]; echo $total,'<br />'; echo $values[0],'<br />'; echo $res; a ideia e essa mais tem q faze o tratamento dos dados pro resultado sai exato.. ve q bicho da isso Compartilhar este post Link para o post Compartilhar em outros sites
Evandro Oliveira 331 Denunciar post Postado Fevereiro 15, 2012 SELECT TIME(MAX(hr_posicao) - MIN(hr_posicao)) AS `tempo_rodagem` FROM rlog_posicoes WHERE dt_posicao = '2012-01-02' AND id_ignicao = 1 AND id_modulo = $id_modulo Compartilhar este post Link para o post Compartilhar em outros sites
cristian_web 15 Denunciar post Postado Fevereiro 15, 2012 $query_data_inicio = "select rlog_posicoes.hr_posicao from rlog_posicoes where rlog_posicoes.dt_posicao >= '2012-01-02' and rlog_posicoes.dt_posicao <= '2012-01-02' and rlog_posicoes.id_ignicao = '1' and rlog_posicoes.id_modulo = '$id_modulo' order by data asc LIMIT 1"; $query_data_fim = "select rlog_posicoes.hr_posicao from rlog_posicoes where rlog_posicoes.dt_posicao >= '2012-01-02' and rlog_posicoes.dt_posicao <= '2012-01-02' and rlog_posicoes.id_ignicao = '1' and rlog_posicoes.id_modulo = '$id_modulo' order by data desc LIMIT 1"; $inicio = mysql_fetch_array($query_data_inicio); $fim = mysql_fetch_array($query_data_fim); $hora_inicial = $inicio['hr_posicao']; $hora_fim = $inicio['hr_fim']; Pode ser feito assim também... Só que seria necessrário 2 consultas. Compartilhar este post Link para o post Compartilhar em outros sites
DannyND 1 Denunciar post Postado Fevereiro 16, 2012 Vou tentar galera.. retorno logo mais. Valeu Evandro Oliveira ..aconteceu um troço estranho. Quando busco a query "SELECT rlog_posicoes.dt_posicao, TIME(MAX(hr_posicao) - MIN(hr_posicao)) AS tempo_rodagem FROM rlog_posicoes WHERE rlog_posicoes.dt_posicao >= '2012-01-01' and rlog_posicoes.dt_posicao <= '2012-01-31' and rlog_posicoes.id_ignicao = '1' and rlog_posicoes.id_modulo = $id_modulo group by rlog_posicoes.dt_posicao" retornar perfeito o total de horas por dia: 2012-01-02 - 00:00:09 2012-01-03 - 00:00:11 2012-01-04 - 00:00:10 2012-01-05 - 00:00:11 2012-01-06 - 00:00:11 2012-01-07 - 00:00:12 Mas quando eu coloco a variável $id_modulo com aspas simples, aparece dessa forma: 2012-01-02 - 09:14:28 2012-01-03 - 2012-01-04 - 10:24:49 2012-01-05 - 2012-01-06 - 11:07:01 2012-01-07 - Essa variável é alfanumérica, portanto preciso que esteja entre aspas simples. O tipo do campo é VARCHAR(10) Compartilhar este post Link para o post Compartilhar em outros sites
Evandro Oliveira 331 Denunciar post Postado Fevereiro 16, 2012 execute a seguinte consulta e veja se aparecem os valores corretamente: SELECT rlog_posicoes.dt_posicao, hr_posicao FROM rlog_posicoes WHERE rlog_posicoes.dt_posicao >= '2012-01-01' and rlog_posicoes.dt_posicao <= '2012-01-31' and rlog_posicoes.id_ignicao = '1' and rlog_posicoes.id_modulo = '$id_modulo' Compartilhar este post Link para o post Compartilhar em outros sites
DannyND 1 Denunciar post Postado Fevereiro 16, 2012 execute a seguinte consulta e veja se aparecem os valores corretamente: SELECT rlog_posicoes.dt_posicao, hr_posicao FROM rlog_posicoes WHERE rlog_posicoes.dt_posicao >= '2012-01-01' and rlog_posicoes.dt_posicao <= '2012-01-31' and rlog_posicoes.id_ignicao = '1' and rlog_posicoes.id_modulo = '$id_modulo' Deu certo, era o GROUP BY que estava interferindo e não as aspas rs. Obrigada a todos que ajudaram... bjsss Compartilhar este post Link para o post Compartilhar em outros sites