Página 1 de 1
Subtrair hora
Enviado: Seg, 31 Jul 2006 3:09 pm
por rcampaneli
Galera uso o oracle 8i e tenho o seguinte select :
Selecionar tudo
SELECT to_char(dat_abertura,'HH24:MI:SS')ABERTURA,
To_char(DAT_FECHAMENTO, 'HH24:MI:SS')FECHAMENTO
FROM CHM_CADASTRO WHERE STA_CHAMADO = 'Fechado'
Gostaria de saber como faço para subtrair o dat_abertura e o dat_fechamento?
Valeu
Enviado: Seg, 31 Jul 2006 3:26 pm
por erthal
Cara,
Dá uma olhada nesse tópico:
"Calculo de horas entre duas datas/horas"
Lá tem a solução que você procura...
Enviado: Seg, 31 Jul 2006 3:32 pm
por rcampaneli
Fiz este seguinte select
[code]SELECT (dat_fechamento - dat_abertura)
as Data from CHM_CADASTRO WHERE STA_CHAMADO = 'Fechado'[/code]
Tem alguma forma de trazer ele com formato de hora?
Enviado: Seg, 31 Jul 2006 3:47 pm
por rcampaneli
os dois campos estão no farmato date
Enviado: Seg, 31 Jul 2006 3:50 pm
por erthal
Enviado: Seg, 31 Jul 2006 3:53 pm
por rcampaneli
será que você poderia me mostar como se faz, não estou conseguindo fazer..
Valeu
Enviado: Seg, 31 Jul 2006 5:12 pm
por Marlon Pasquali
Isso:
Selecionar tudo
SELECT (to_date(dat_fechamento,'DD/MM/RRRR HH24:MI:SS') - to_date(dat_abertura,'DD/MM/RRRR HH24:MI:SS')) * 24 horas
as Data from CHM_CADASTRO WHERE STA_CHAMADO = 'Fechado'
Enviado: Seg, 31 Jul 2006 5:16 pm
por rcampaneli
Ele trouxe o resulto com valor 0 ..
Enviado: Seg, 31 Jul 2006 5:24 pm
por Marlon Pasquali
é que o resultado certamente está dando menor do que 1 hora. Veja abaixo o exemplo mais completo.
Selecionar tudo
select trunc(( (dat_fechamento - dat_abertura) * 86400 / 3600)) ||':' ||
trunc(mod( (dat_fechamento - dat_abertura) * 86400 , 3600 ) / 60 ) || ':'||
trunc(mod ( mod ( (dat_fechamento - dat_abertura) * 86400, 3600 ), 60 )) Tempo
as Data from CHM_CADASTRO WHERE STA_CHAMADO = 'Fechado'
Enviado: Seg, 31 Jul 2006 5:26 pm
por rcampaneli
Cara é isso mesmo...muito obrigado a todos pelas dicas..
valeu
Re: Retorna mais de uma linha
Enviado: Qua, 24 Out 2018 3:05 pm
por FMMS
Marlon Pasquali escreveu:é que o resultado certamente está dando menor do que 1 hora. Veja abaixo o exemplo mais completo.
Selecionar tudo
select trunc(( (dat_fechamento - dat_abertura) * 86400 / 3600)) ||':' ||
trunc(mod( (dat_fechamento - dat_abertura) * 86400 , 3600 ) / 60 ) || ':'||
trunc(mod ( mod ( (dat_fechamento - dat_abertura) * 86400, 3600 ), 60 )) Tempo
as Data from CHM_CADASTRO WHERE STA_CHAMADO = 'Fechado'
Segue Ex:
Selecionar tudo
SELECT ap.nr_atendimento,
ap.DT_ALTA,
ap.DT_ENTRADA,
(SELECT TRUNC(( (apu.dt_saida_unidade - apu.dt_entrada_unidade) * 86400 / 3600)) || ':' ||
TRUNC(MOD( (apu.dt_saida_unidade - apu.dt_entrada_unidade) * 86400, 3600) / 60) || ':' ||
TRUNC(MOD ( MOD ( (apu.dt_saida_unidade - apu.dt_entrada_unidade) * 86400, 3600),60))
FROM atend_paciente_unidade apu
[b]WHERE apu.cd_setor_atendimento = 129 --Aqui pode ter duas ou mais datas, aí precisaria somar--[/b]
AND apu.nr_atendimento = ap.nr_atendimento) unid_inter_3_andar
FROM atendimento_paciente_v ap,
conta_paciente c,
cirurgia r
WHERE ap.nr_atendimento = c.nr_atendimento
and ap.NR_ATENDIMENTO = r.nr_atendimento(+)
AND ap.cd_estabelecimento = 1 --:cd_estabelecimento
AND ap.dt_entrada between '20/10/2018' AND '24/10/2018' --:dt_inicial and :dt_final + 86399 / 86400
AND exists (select 1
from conta_paciente
where nr_atendimento = ap.NR_ATENDIMENTO)
--AND ap.NR_ATENDIMENTO = 1844338
GROUP BY ap.nr_atendimento,ap.DT_ALTA,ap.DT_ENTRADA
ORDER BY ap.DT_ENTRADA;