Soma entre hora
-
- Rank: Programador Júnior
- Mensagens: 16
- Registrado em: Seg, 31 Jul 2006 3:04 pm
- Localização: PR
Galera como faço para somar campos que recebem hora??
-
- Rank: Programador Júnior
- Mensagens: 28
- Registrado em: Seg, 20 Mar 2006 3:40 pm
- Localização: Erechim - RS
Transforme tudo em segundos. Depois veja o exemplo abaixo para o resultado
select to_char(trunc(:seg/60/60),'09') ||
to_char(trunc(mod(:seg,3600)/60),'09') ||
to_char(mod(mod(:seg,3600),60),'09') hh_mm_ss
from dual;
- dr_gori
- Moderador
- Mensagens: 5024
- Registrado em: Seg, 03 Mai 2004 3:08 pm
- Localização: Portland, OR USA
- Contato:
Thomas F. G
Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered
Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered
Como assim somar campos que recebem hora? Dá um exemplo!rcampaneli escreveu:Galera como faço para somar campos que recebem hora??
-
- Rank: Programador Júnior
- Mensagens: 16
- Registrado em: Seg, 31 Jul 2006 3:04 pm
- Localização: PR
os campos recebem os valores sydate, eu quero os valores das horas..
Como eu faço essa tranformação para segundos??
Como eu faço essa tranformação para segundos??
- dr_gori
- Moderador
- Mensagens: 5024
- Registrado em: Seg, 03 Mai 2004 3:08 pm
- Localização: Portland, OR USA
- Contato:
Thomas F. G
Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered
Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered
Vamos ver se é isso que você quer:
Observe que primeiro, eu descubro a diferença entre SYSDATE (que contém hora, minuto, segundo, etc) e o TRUNC(sysdate), que é apenas o DIA, sem minutos. Sobra disso um valor entre 0 e 1.
Esse valor é um número fracionário, sendo 1 equivalente a UM DIA. Ou seja, para obtermos a qtd de HORAS, basta multiplicar esse valor por 24! Para ter em minutos, 24 * 60 e como no exemplo acima, buscamos os segundos: 24*60*60! Voalá!
É isso que você quer ?
SQL> SELECT (SYSDATE - TRUNC(SYSDATE) ) * 24 * 60 * 60
2 FROM DUAL
3 /
(SYSDATE-TRUNC(SYSDATE))*24*60*60
---------------------------------
60642
SQL>
Esse valor é um número fracionário, sendo 1 equivalente a UM DIA. Ou seja, para obtermos a qtd de HORAS, basta multiplicar esse valor por 24! Para ter em minutos, 24 * 60 e como no exemplo acima, buscamos os segundos: 24*60*60! Voalá!
É isso que você quer ?
-
- Rank: Programador Júnior
- Mensagens: 16
- Registrado em: Seg, 31 Jul 2006 3:04 pm
- Localização: PR
Eu tenho este select aqui...
gostaria de somar o dat_atendimento + hor_previsto, e trazer no formato de horas...
select To_char(dat_atendimento, 'HH24:MI:SS'),
to_char(hor_previsto, 'HH24:MI:SS') from chm_cadastro
-
- Rank: Programador Júnior
- Mensagens: 16
- Registrado em: Seg, 31 Jul 2006 3:04 pm
- Localização: PR
ele da o seguinte erro:
ORA-00975: date + date not allowed
ORA-00975: date + date not allowed
-
- Rank: Programador Júnior
- Mensagens: 28
- Registrado em: Seg, 20 Mar 2006 3:40 pm
- Localização: Erechim - RS
Da um exemplo de como exatamente está gravado em sua base estes 2 valores. você quer somar o Hor_previsto a partir da Dat_atendimento ?
-
- Rank: Programador Júnior
- Mensagens: 16
- Registrado em: Seg, 31 Jul 2006 3:04 pm
- Localização: PR
É isso mesmo, tenho estes dois campos o dat_atendimento que recebe o sysdate no inicio do processo e o hor_prevista que recebe no final ... gostaria de somar estes dois campos para ver o o tempo que foi utilizado
-
- Rank: Programador Júnior
- Mensagens: 28
- Registrado em: Seg, 20 Mar 2006 3:40 pm
- Localização: Erechim - RS
tenta com esta instruçao
select trunc(( (hor_prevista - dat_atendimento) * 86400 / 3600)) ||':' ||
trunc(mod( (hor_prevista - dat_atendimento) * 86400 , 3600 ) / 60 ) || ':'||
trunc(mod ( mod ( (hor_prevista - dat_atendimento) * 86400, 3600 ), 60 )) Tempo
from .........
-
- Rank: Programador Júnior
- Mensagens: 16
- Registrado em: Seg, 31 Jul 2006 3:04 pm
- Localização: PR
Para diminuir ele funciona... mas não pra somar...
-
- Rank: Programador Júnior
- Mensagens: 28
- Registrado em: Seg, 20 Mar 2006 3:40 pm
- Localização: Erechim - RS
ainda acho que se você quer ver a diferença de tempo entre o inicio e o fim do processo, a rotina acima é a certa. Mas, se você quer mesmo somar a quantidade de horas do final em cima do inicial, então tenta usar essa rotina ai:
select to_char(trunc((((dat_atendimento - TRUNC(dat_atendimento)) * 24 * 60 * 60) + ((hor_prevista - TRUNC(hor_prevista)) * 24 * 60 * 60)) /60/60),'09') ||
to_char(trunc(mod((((dat_atendimento - TRUNC(dat_atendimento)) * 24 * 60 * 60) + ((hor_prevista - TRUNC(hor_prevista)) * 24 * 60 * 60)) ,3600)/60),'09') ||
to_char(mod(mod((((dat_atendimento - TRUNC(dat_atendimento)) * 24 * 60 * 60) + ((hor_prevista - TRUNC(hor_prevista)) * 24 * 60 * 60)) ,3600),60),'09') hh_mm_ss
from dual
-
- Rank: Programador Júnior
- Mensagens: 16
- Registrado em: Seg, 31 Jul 2006 3:04 pm
- Localização: PR
é isso mesmo que preciso... valeu galera pelas dicas...
-
- Informação
-
Quem está online
Usuários navegando neste fórum: Bing [Bot] e 26 visitantes