Calculo de data

Dúvidas, dicas e truques de SQL, Select, Update, Delete, cláusulas, operações com joins, Funções em SQLs, etc
Rei Destruido
Rank: Estagiário Júnior
Rank: Estagiário Júnior
Mensagens: 2
Registrado em: Qui, 17 Out 2019 10:21 am

Bom dia!

Preciso de ajuda, estou com um relatório que traz várias informações de pacientes e a idade sendo um deles. Até funciona, mas somente quando o paciente tem mais de 01 ano de vida,
quando o paciente tem 4 meses por exemplo, logo, ele traz a idade zerada a informação é necessária, pois trata-se de um censo.
Eu entendo que o erro encontra-se no cálculo, mas não consigo formular uma ideia que traga
por exemplo, 84 anos 3 meses e 5 dias ou 0 anos 5 meses e 20 dias.

Segue abaixo o select

Selecionar tudo

SELECT TRUNC( ((SYSDATE - DATANASC)/360)) FROM SZPACIENTE
Rei Destruido
Rank: Estagiário Júnior
Rank: Estagiário Júnior
Mensagens: 2
Registrado em: Qui, 17 Out 2019 10:21 am

ATUALIZANDO:

Pensei também em uma outra fórmula, mas sem sucesso!

Selecionar tudo

SELECT ( CASE WHEN ANOS >= 1 THEN ANOS || ' ano(s)' ELSE
      ( CASE WHEN MESES >= 1 THEN MESES || ' mês(es)' ELSE DIAS || ' dia(s)' END) END) IDADE
FROM
(
SELECT (CASE WHEN (EXTRACT(YEAR FROM sysdate) - EXTRACT(YEAR FROM SZPACIENTE.DATANASC))> = 1
            THEN (trunc((SYSDATE - TO_DATE(SZPACIENTE.DATANASC))/365.25)) ELSE 0 END) ANOS,
           
      (CASE WHEN (EXTRACT(MONTH FROM sysdate) - EXTRACT(MONTH FROM SZPACIENTE.DATANASC)* -1) > 1
            THEN (EXTRACT(MONTH FROM sysdate) - EXTRACT(MONTH FROM SZPACIENTE.DATANASC)) ELSE 0 END) MESES,
           
      (CASE WHEN (EXTRACT(DAY FROM sysdate) - EXTRACT(DAY FROM SZPACIENTE.DATANASC) * -1) > 1
            THEN (EXTRACT(DAY FROM sysdate) - EXTRACT(DAY FROM SZPACIENTE.DATANASC)) ELSE 0 END) DIAS
           
FROM SZPACIENTE, SZATENDIMENTO)
WHERE SZPACIENTE.CODPACIENTE       = SZATENDIMENTO.CODPACIENTE AND
      SZATENDIMENTO.CODATENDIMENTO = :CODATENDIMENTO          AND
      SZATENDIMENTO.CODPACIENTE    = :CODPACIENTE
);
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 13 visitantes