Ir para conteúdo

POWERED BY:

Arquivado

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

Filipe Poiato

Problemas com horas

Recommended Posts

Bom dia Galera,

Estou com um problema simples, mas que ta me martelando a cabeça.

Tenho no beu bd um campo hora onde é armazenada as quantidade de horas de cada serviço. Tenho um relatório que deve exibilás, porém estou com problemas para isso a forma qua utilizo esta mostrando a hora no formato errado, ao invés de exibir 25:00 ela exibe 01:00. Abaixo segue o meu select e a forma como trato e exibo isso. Se alguém puder me apontar onde estou errando eu agredeço.

 

<%
set bd_count = Conexao.Execute ("SELECT COUNT(*) AS qtde , sum(tatend) AS totqtde FROM manutencoes WHERE (situacaoid=4 OR situacaoid=6) AND (data_exec BETWEEN #"&vdt_i&"# AND #"&vdt_f&"#)")
mtotalHoras = bd_count("totqtde")
%>
Horas:<%=left(FormatDateTime((mtotalHoras),3),5)%>
Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ai ele traz um número real.

Quando se da um SUM em um campo hora ele transforma em numero real para fazer a conta e depois é preciso um comando que formate ele de volta. o problema é que este FormatDateTime transforma para horas do dia então ele vai até 23:59 depois vira 00:00.

Oque eu preciso é um modo de formatar para o tipo 000:00 (que aceita mais de 24h).

Compartilhar este post


Link para o post
Compartilhar em outros sites

existe uma função para exibição e gravação de hora no formato correto, dá uma pesqusisada vai te ajudar

Compartilhar este post


Link para o post
Compartilhar em outros sites

e se armazenar esses dados como decimal, e através de script comparar o decimal e se caso for maior que 59 soma mais 1 ao valor inteiro e guarda a diferença em decimais?

Após isso seria apenas formatar o . para : passando assim para o formato de hh/mm tipo

 

23.62 o script verifica se o .62 é maior que 59 e faz os calculos necessários, ficando 24.03 depois formata-se, trocando o . para : 24:03 e exibe-se isso na tela e numa possivel versão para impressão.

 

Poderia fazer isso também armazenando somente os minutos no bd ao inves de horas, e depois calcula-se as horas igual quando queremos calcular quantos dias/anos alguem tem informando a data de nascimento ou quanto falta para seu aniversário.

 

Porem, nos dois casos muda-se o campo no bd ou para decimal ou para inteiro, se for possivel, creio que seja uma boa saida.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Este codigo permite a formatação da hora no formato HH:MM:SS

 

Onde:

- HH: Hora com 2 dígitos

- MM: Minutos com 2 dígitos

- SS: Segundos com 2 dígitos

 

Ex:

dataAtual = "19/01/2010 12:27"

Response.Write(FormataHora(dataAtual))

 

Resultado:

12:27:00

 

<%
Function FormataHora(DataHora)
  FormataHora = Right("0" & DatePart("H",DataHora),2) & ":" & Right("0" & DatePart("n",DataHora),2) & ":" & Right("0" & DatePart("s",DataHora),2)
End Function
%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Meu problema é que não posso mexer nos campos do banco pois esse sistema já estava em funcionamento quando eu cheguei.

Ai fui gerar os relatórios e me deparei com esse problema.

Então formatar a tada sem mexer no campo não tem como mesmo?

Valeu.

Compartilhar este post


Link para o post
Compartilhar em outros sites

você pode usar a function que postei para exibí-los

Compartilhar este post


Link para o post
Compartilhar em outros sites

para somar horas, você pode usar o DateAdd

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.