Senhores, sei que esse tópico foi bastante discutido, mas não encontrei em nenhum deles a solução para meu problema. Tenho uma consulta que mostra o tempo de duração de uma narrativa numa coluna e o tempo de duração de um vídeo em outra. Como são inúmeros registros e esses são quebrados por blocos, preciso o total das narrativas e o total do tempo dos vídeos de cada bloco e no final o total geral das colunas. Os campos na BD é do tipo TIME. Ví que o SC soma apenas campos numéricos, então, o que posso fazer parra resolver esse dilema?
jobson,
Tem sim alguns links sobre cálculo de horas. Tem este link, por exemplo: http://www.scriptcase.com.br/forum/index.php/topic,10740.msg54118.html#msg54118. Se não for o que procura, veja a macro sc_time_diff().
Qual é o banco? Geralmente consultas com campos elaborados eu faço na sql e crio uma view para exibir esses campos de soma ja prontos e nao exigir muito do sistema ai fica a tarefa para o banco de dados.
Ex:
02:35:00
01:20:00
03:40:00
SELECT SEC_TO_TIME( SUM( TIME_TO_SEC( nome_campo ) ) ) AS total_horas FROM nome_tabela
ou criar um campo e da um valor da variavel de soma a ele
$check_sql = “SELECT SEC_TO_TIME( SUM( TIME_TO_SEC( nome_campo ) ) ) AS total_horas FROM nome_tabela”;
sc_lookup(rs, $check_sql);
$soma_hora = {rs[0][0]};
{campo_soma}=$soma_hora ;
Att Arquimedes
Para resolver o meu problema fiz o seguinte:
no SQL usei:
extract( epoch from tmp_esc) AS total_esc,
extract( epoch from tmp_vt) AS total_vt
na Totalização marquei como soma os campos:
total_esc e total_vt
no evento da quebra bloco_onGroupBy
$seconds = {sum_bloco_total_vt} + {sum_bloco_total_esc};
$hours = floor($seconds / 3600);
$seconds -= $hours * 3600;
$minutes = floor($seconds / 60);
$seconds -= $minutes * 60;
$hours = str_pad($hours, 2, ‘0’, STR_PAD_LEFT);
$minutes = str_pad($minutes, 2, ‘0’, STR_PAD_LEFT);
$seconds = str_pad($seconds, 2, ‘0’, STR_PAD_LEFT);
{sum_bloco_tempo_total} = $hours . ‘:’ . $minutes . ‘:’ . $seconds;
Obtendo dessa forma o total do tempo para cada bloco de materias.