Ajuda com um exercício!

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
nathinhaa
Rank: Estagiário Júnior
Rank: Estagiário Júnior
Mensagens: 1
Registrado em: Ter, 29 Mai 2012 5:35 pm

Olá, eu estou começando com pl/sql agora e estou fazendo um exercício que não consigo resolver de jeito nenhum :/
O usuário digita uma data e vê quantos dias se passaram da data digitada até a data atual.

eu tinha feito algo mais ou menos assim:

set serveroutput on
declare
dt_entrada date:= to_date('&data_entrada','dd/mm/yyyy');
qt_dias_vida number;
begin
qt_dias_vida := MONTHS_BETWEEN(sysdate, dt_entrada)* 12;
dbms_output.put_line('Quem nasceu na data ' || dt_entrada || ' têm ' || qt_dias_vida || 'dias de vida');
end;

o que me falta é nesse qt_dias_vida, colocar corretamente como se acha esses dias..

alguém pode me ajudar?

Obrigada
DanielNN
Moderador
Moderador
Mensagens: 641
Registrado em: Seg, 03 Set 2007 3:26 pm
Localização: Fortaleza - CE
att,

Daniel N.N.

Quando você faz:

Selecionar tudo

qt_dias_vida := MONTHS_BETWEEN(sysdate, dt_entrada)* 12;
Está no caminho porém ele retorna a quantidade de meses. Você multiplica por 12, porém só faria sentido se a função retornasse anos e você quisesse meses.
Usando MONTHS_BETWEEN() você teria que multiplicar pelo número MÉDIO de dias que 1 mês possui. Ou seja, será impreciso.

Mas a solução é bem mais simples do que imaginas...

Selecionar tudo

qt_dias_vida := sysdate - dt_entrada;
OBS: Ambos precisam ser DATE. O resultado é em dias, com frações, onde estas representam hora,minuto,segundo.
Se quiser pegar uma dessas medidas multiplique a fração por 24, 1440 ou 86400,respectivamente.
Responder
  • Informação
  • Quem está online

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