Página 1 de 1
Ajuda num Select que traz Horas
Enviado: Ter, 08 Mai 2007 11:33 am
por madmax
Caros amigos estou com este select abaixo: mas quando os segundo ultrapassa 2 casas decimais fica assim ### como posso tratar isso ???
Aceito qualquer ajuda possivel porque já pensei em quase tudo rsrsrs....
Abraços amigos.....
Selecionar tudo
SELECT abs(Ltrim(To_Char(Trunc(((TO_DATE('01/12/2006 11:05:45','DD/MM/YYYY HH24:MI:SS')
- TO_DATE('02/12/2006 13:25:40','DD/MM/YYYY HH24:MI:SS')))*24),'999999999999999'),' '))
||':'||
Ltrim(To_Char(abs(Round((((TO_DATE('01/12/2006 11:05:45','DD/MM/YYYY HH24:MI:SS') - TO_DATE('02/12/2006 13:25:40','DD/MM/YYYY HH24:MI:SS')))*24
- Trunc(((TO_DATE('01/12/2006 11:05:45','DD/MM/YYYY HH24:MI:SS')
- TO_DATE('02/12/2006 13:25:40','DD/MM/YYYY HH24:MI:SS')))*24))*60)),'00'),' ')
||':'||
Ltrim(To_Char(abs(Round((((TO_DATE('01/12/2006 11:05:45','DD/MM/YYYY HH24:MI:SS') - TO_DATE('02/12/2006 13:25:40','DD/MM/YYYY HH24:MI:SS')))*24
- Trunc(((TO_DATE('01/12/2006 11:05:45','DD/MM/YYYY HH24:MI:SS')
- TO_DATE('02/12/2006 13:25:40','DD/MM/YYYY HH24:MI:SS')))*24))*60))*360,'00'),' ')
horas
from dual
Enviado: Ter, 08 Mai 2007 1:49 pm
por rogenaro
Sei que não responde a sua pergunta, mas ai vai uma consulta parecida que eu fiz um tempo atrás:
Selecionar tudo
select horas||':'||minutos||':'||segundos
from
(
select lpad(trunc( abs(data1-data2) * 24 ) , 2, '0') horas
, lpad(trunc((mod(trunc(abs(data1-data2) * 24 * 60 ), 60))), 2, '0') minutos
, lpad(trunc((mod(round(abs(data1-data2) * 24 * 60 * 60), 60))), 2, '0') segundos
from
(
select to_date('01/12/2006 11:05:45','DD/MM/YYYY HH24:MI:SS') data1
, to_date('02/12/2006 13:25:40','DD/MM/YYYY HH24:MI:SS') data2
from dual
)
);
Thanks !!!
Enviado: Ter, 08 Mai 2007 4:56 pm
por madmax
Caro amigo Rogenaro
Seu select caiu como uma luva rsrsrs...
Muito abrigado amigo..
Enviado: Ter, 15 Mai 2007 11:55 am
por Toad
Olha, já que o assunto é esse, há um tempo o
vindalencio postou um select que selecionava vários campos que calculavam de diversas formas, datas e horas:
Selecionar tudo
SELECT SYSDATE DATA_ATUAL,
ADD_MONTHS(SYSDATE,-1) MENOS_UM_mês,
ADD_MONTHS(SYSDATE,1) MAIS_UM_mês,
LAST_DAY(SYSDATE) ULTIMO_DIA_mês,
TRUNC(SYSDATE,'MONTH') PRIMEIRO_DIA_mês,
MONTHS_BETWEEN(SYSDATE,'01-JAN-2001') QTD_mês,
FLOOR(MONTHS_BETWEEN(SYSDATE,'01-JAN-2001')) ARREDONDA_ABAIXO,
CEIL(MONTHS_BETWEEN(SYSDATE,'01-JAN-2001')) ARREDONDA_ACIMA,
ABS(MONTHS_BETWEEN(SYSDATE,'01-JAN-2001')) VALOR_ABSOLUTO,
ROUND((MONTHS_BETWEEN(SYSDATE,'01-JAN-2001')),3) ARREDONDA,
TRUNC(SYSDATE,'year') PRIMEIRO_DIA_ANO,
to_char(SYSDATE,'dd " de " FMMONTH " de " YYYY','nls_date_language=portuguese')DIAMES_EXTENSO,
to_char(SYSDATE,'FMMONTH " DE " YYYY','nls_date_language=portuguese') mês_EXTENSO,
TO_CHAR(SYSDATE,'HH24:MI') HORA_MINUTO,
to_char(sysdate,'FMMonth','nls_date_language=portuguese') mês_corrente,
to_date(lpad(to_char(1234),4,'0'),'hh24mi') dias_data,
Floor(floor(months_between(SYSDATE,to_date('11/02/1982'))) / 12) IDADE,
decode(TO_NUMBER(TO_CHAR(SYSDATE,'D')),2,'segunda-feira',
3,'terça-feira',
4,'quarta-feira',
5,'quinta-feira',
6,'sexta-feira',
7,'sabado',
1,'domingo') dia_da_semana
FROM DUAL
Re: Ajuda num Select que traz Horas
Enviado: Qua, 24 Out 2018 10:00 am
por FMMS
Bom dia, sou novo por aqui e na questão PL/SQL.
Tenho uma query, porém está retornando um erro que retorna "A subconsulta retorna mais de uma linha", creio que não estou sabendo alocar o SUM ou NVL no local correto.
Segue o código:
Selecionar tudo
SELECT ap.nr_atendimento,
ap.DT_ALTA,
ap.DT_ENTRADA,
(select lpad(trunc( abs(apu.dt_saida_unidade - apu.dt_entrada_unidade) * 24 ) , 2, '0') || ':' ||
lpad(trunc((mod(trunc(abs(apu.dt_saida_unidade - apu.dt_entrada_unidade) * 24 * 60 ), 60))), 2, '0')|| ':' ||
lpad(trunc((mod(round(abs(apu.dt_saida_unidade - apu.dt_entrada_unidade) * 24 * 60 * 60), 60))), 2, '0')
FROM atend_paciente_unidade apu
WHERE apu.cd_setor_atendimento = 129
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;
Re: Thanks !!!
Enviado: Qua, 24 Out 2018 10:31 am
por FMMS
madmax escreveu:Caro amigo Rogenaro
Seu select caiu como uma luva rsrsrs...
Muito abrigado amigo..
Amigo, bom dia. No meu caso, está retornando "erro mais de uma linha na consulta de uma única linha"
Não estou conseguindo alocar o SUM ou NVL no código abaixo:
Selecionar tudo
SELECT ap.nr_atendimento,
ap.DT_ALTA,
ap.DT_ENTRADA,
(select lpad(trunc( abs(apu.dt_saida_unidade - apu.dt_entrada_unidade) * 24 ) , 2, '0') || ':' ||
lpad(trunc((mod(trunc(abs(apu.dt_saida_unidade - apu.dt_entrada_unidade) * 24 * 60 ), 60))), 2, '0')|| ':' ||
lpad(trunc((mod(round(abs(apu.dt_saida_unidade - apu.dt_entrada_unidade) * 24 * 60 * 60), 60))), 2, '0')
FROM atend_paciente_unidade apu
WHERE apu.cd_setor_atendimento = 129
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;
Re: Ajuda num Select que traz Horas
Enviado: Qua, 24 Out 2018 1:32 pm
por Toad
Oi @FMMS, se seu problema é que o SELECT está retornando mais de uma linha e você precisa só da primeira linha, você pode adicionar a seguinte cláusula ao SELECT principal:
Mas convém expandir essas Subqueries aí pra entender o que está acontecendo, porque pode ser que você tenha algum problema relacionado a dados repetidos em seu banco de dados.
No mais, quando você conseguir desmembrar esse SELECT e tiver alguma dúvida sobre isso, poste o código aqui usando a tag
code e
/code para formatar e ficar melhor pra gente ler e entender.
Re: Ajuda num Select que traz Horas
Enviado: Dom, 03 Fev 2019 3:26 pm
por Renato Menezes Viana
Pessoal, apenas uma outra ótica para trabalhar com diferença de datas, horas e assemelhados que talvez seja mais simples que multiplicações e multiplicações e multiplicações, etc
http://glufke.net/oracle/viewtopic.php? ... 992#p38992