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
Ajuda com um exercício!
-
- Moderador
- Mensagens: 641
- Registrado em: Seg, 03 Set 2007 3:26 pm
- Localização: Fortaleza - CE
att,
Daniel N.N.
Daniel N.N.
Quando você faz:
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...
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.
qt_dias_vida := MONTHS_BETWEEN(sysdate, dt_entrada)* 12;
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...
qt_dias_vida := sysdate - dt_entrada;
Se quiser pegar uma dessas medidas multiplique a fração por 24, 1440 ou 86400,respectivamente.
-
- Informação
-
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante