Preciso fazer alguns cálculos com hora. O campo que armazena a hora na minha tabela é do tipo caractere. Há alguma função que faça este cálculo ou devo fazer na raça?
Jonas, Qual a versão do seu Progress? A partir da versão 10.1A, existe uma função chamada INTERVAL, que permite mostrar as diferenças entre data, e data e hora. Caso não seja, recomendo que você converta em inteiros na menor medida, e depois desfaça. Esta menor medida que falo é se sua hora for em HH:MM, utilize a conversão para minutos, se for HH:MM:SS, converta tudo para segundos. Calcule a diferença e desfaça o processo. Posta mais detalhes. T+
Aproveitando este tópico, eu nunca usei essa função INTERVAL.. como utiliza-la? Alguém tem um exemplo???
Segue um exemplo que retorna a quantidade de anos, meses, e dias entre um intervalo de data, mas a lógica também pode ser utilizada para retornar em horas, minutos e segundos. Código: def var dt-data-ini as date no-undo. def var dt-data-fim as date no-undo. def var i-Ano as int no-undo. def var i-Mes as int no-undo. def var i-Dia as int no-undo. def var dt-aux as date no-undo. assign dt-data-ini = date('01/06/2009') dt-data-fim = date('01/06/2010') i-Ano = 0 i-Mes = 0 i-Dia = 0. if dt-data-fim < dt-data-ini then do: message "Data inicial maior do que a data final. Verifique" VIEW-AS ALERT-BOX warning BUTTONS ok title "Erro". return no-apply. end. ASSIGN dt-aux = dt-data-ini. /* Contar a quantidade de anos */ ASSIGN i-Ano = INTERVAL (dt-data-fim, dt-aux, "years"). IF i-Ano > 0 THEN ASSIGN dt-aux = ADD-INTERVAL (dt-aux, i-Ano, "years"). /* Contar a quantidade de meses */ ASSIGN i-Mes = INTERVAL (dt-data-fim, dt-aux, "months"). IF i-Mes > 0 THEN ASSIGN dt-aux = ADD-INTERVAL (dt-aux, i-Mes, "months"). /* Contar a quantidade de dias */ ASSIGN i-Dia = INTERVAL (dt-data-fim, dt-aux, "days"). message "Quantidade de ano(s): " + string(i-Ano) skip "Quantidade de mes(es): " + string(i-Mes) skip "Quantidade de dia(s): " + string(i-Dia) VIEW-AS ALERT-BOX INFO BUTTONS ok title "Resultado". []'s