Jump to content
RAFAEL C D EMELO

[Resolvido] Cálculo de datas

Recommended Posts

Ola galera estou com uma duvida sou novo trabalhando com Oracle e preciso calcular A diferenca entre datas no caso seria


Ver as datas de um contrato e primeiramente calcular se ele esta ativo no mes nesse se sim ele precisaria calcular
quantos dias ele esta ativo NO mesmo por exemplo ele pode ter iniciado o contraro no dia 1 ou no dia 16 ai calcularia
os dias que ele precisa me pagar pelo seguro mas estou com duvidas de como posso calcular A quantidades de dias nesse
caso se alguém puder ajudar fico muito agradecido.

 

Share this post


Link to post
Share on other sites

A diferença de datas no Oracle pode ser calculado subtraindo duas datas o resultado seria em dias (ou fração).

 

 

Share this post


Link to post
Share on other sites

Opa tudo bem mota seria em dias mas no caso eu precisaria fazer a conta do mesmo mas minhas datas sao as datas do inicio das contratos e as datas do mes corrente entende nesse caso o resultado n seria somente dos dias do mes que e o que eu preciso por exemplo o contrato comecou no dia 14/03/2015 e vai ate o dia 29/08/2020 porem eu recebo o file desse mes e preciso calcular quanto ele tem q pagar pelo seguro eu posso fazer um calculo do inicio do mes ate o fim do mes mesmo com anos diferentes ?

Share this post


Link to post
Share on other sites

Sim , veja uma simulação com a DUAL

 

select
to_date('29/08/2020','dd/mm/yyyy') - to_date('14/03/2015','dd/mm/yyyy') dias  
from dual

      DIAS
----------
      1995 

Veja também a function months_between

Share this post


Link to post
Share on other sites

Bom dia pessoal ainda estou com algumas duvidas sobre o procedimento que estou razendo

 

no caso estou fazendo alguns checks em uma tablea antes de inserir alguns dados, ums dos checks que preciso fazer e checar se o catrato esta ativo do veiculo ou n no mesmo de janeiro se ele inicia antes do dia primeiro e acaba apos o dia 31 de janeiro ok somente calculo a quantidade de dias esse check esta ok , porme eu tenho que fazer outro que se o contrato por exemplo inicia no dia 10 de Janeiro e acaba apos o dia 31 eu vou calcular somente esses dias de diferenca que seriam 21 dias/365 porme estou com um erro que n acho o motivo vou anexar minha querey alguem com conhecimentos em trabalhar com essas datas pode me ajudar desde ja eu agradeco

declare

V_RESULT_2 NUMBER(8,4);
V_RESULT_1 NUMBER(8,4) ; -- recebe o resultado do calculo
V_MONTH DATE ; -- parametro do mes analisado
V_DATA_START DATE; -- recebe pelo cursor a data atc_startdate
V_DATE_END DATE; --recebe pelo cursor a realenddate
V_END_MONTH DATE; --recebe a quantidade de dias dentro do mes
 begin
 
 V_MONTH := '01/01/2019';
 
 SELECT LAST_DAY('01/01/2019')INTO V_END_MONTH FROM DUAL;
 
  for reg in (select * from TEMP_MASTER_MONTHLY)
    loop
           
      V_DATA_START:= REG.atc_startdate;
      V_DATE_END := REG.REALENDDATE;
     
     IF V_DATA_START <= V_MONTH AND V_DATE_END >= V_END_MONTH THEN
         V_RESULT_1 := TO_NUMBER ((V_END_MONTH - V_MONTH)+1)/365;
      
          
           DBMS_OUTPUT.PUT_LINE('-----------');
           DBMS_OUTPUT.PUT_LINE(V_DATA_START);
           DBMS_OUTPUT.PUT_LINE(V_DATE_END);
           DBMS_OUTPUT.PUT_LINE('EXPOSURE VALUE' ||' '|| V_RESULT_1);
           DBMS_OUTPUT.PUT_LINE('-----------');
          
      ELSIF  V_DATA_START > V_MONTH AND to_date (V_DATA_START = 'JAN/2019')) AND V_DATE_END > V_MONTH then 
             V_RESULT_2 := TO_NUMBER ((V_DATA_START + V_END_MONTH)+1)/365;
                          
            --V_RESULT_1 := TO_NUMBER ((V_END_MONTH - V_MONTH)+1)/365;         
            DBMS_OUTPUT.PUT_LINE(V_DATA_START);
            DBMS_OUTPUT.PUT_LINE(V_DATE_END);
            DBMS_OUTPUT.PUT_LINE(V_RESULT_2);
            DBMS_OUTPUT.PUT_LINE('W');
   
     ELSE
       DBMS_OUTPUT.PUT_LINE('N');
       DBMS_OUTPUT.PUT_LINE(V_DATA_START);
       DBMS_OUTPUT.PUT_LINE(V_DATE_END ||' ESTOU AQUI' );
     END IF;
     
    end loop;
end;

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By Pedro Vinicius Miguel Dias
      Pessoal, estou estudando o Banco de Dados Oracle e estou tendo um problema pra criar uma nova conexão.
      Durante o curso, o instrutor pede que eu crie duas conexoes, a TESTE com a senha: teste e a PRATICA com a senha :pratica... cada uma com uma senha e etc e elas funcionam.
      Eu por minha conta quis criar outra conexão com outro nome e outra senha, Ex. (User TESTE2 e senha: teste2) e ao testar, o Banco não conecta. Erro ORA-01017.
       
      Alguém consegue me ajudar?
    • By Matsuura
      Estou tentando criar o usuário o Scott, e na internet encontro bastante tutoriais para instalação do HR, para o scott dois que me referenciei foram:
      https://www.profissionaloracle.com.br/swillians/forums/topic/usuario-scott-tiger-banco-oracle-10g-express-edition-xe/
      https://docs.oracle.com/database/121/COMSC/installation.htm#COMSC00007
       
      no primeiro link que tentei seguir não encontrei após a intalação o arquivo "demobld.sql"estou enviando a imagem com nome "sql1" e "sql2" que mostram a minha tentativa de instalação, com as mensagens de erros que me retornaram, no segundo link mostra as instalações de schemas, mas não mostra especificamente o Scott. 
      Espero que possam me ajudar, estou a mais de duas semanas tentando sem exito.


    • By NaPraia
      Buenas,
       
      alguém já gerou arquivo em pdf?
       
      eu já usei utl_file e text_io para gerar excel mas para pdf não sei se dá, sabem?
      tenho pesquisado e falam do BI Publisher, já usaram?
    • By Mvc
      Olá,
      Gostaria de fazer uma query mas o retorno ou vem ou não vem dados. Vou citar exemplos.
       
      Me ajudem PF se o melhor caso é union ou outro?
       
      1) Tabela 1 e tabela 2 com campos distintos e um campo em comum com Join no campo card.
      Resultado: No meu select qdo tem dados nas 2 tabelas então retornam todos em comum em uma única linha.
       
      Tabela 1(id, card)
      1, xxx
      2, yyy
      3, zzz
      Tabela 2 (id, card, fraude)
      1, xxx, sim 
      2, yyy, sim
      3, zzz, pendente
       
      Select a.id, a.card, b.card, b.fraude
      from t1 a,t2 b
      where  a.card=b.card;
       
      Retorno:
      Id,Card,Card,fraude
      1, xxx,xxx,sim
      2, yyy,yyy,sim
      3, zzz,zzz,pendente
       
      O problema é qdo na tabela 2 não tem o dado:
      2)Tabela 1 e tabela 2 com campos distintos e um campo em comum com Join no campo card.
      Resultado: No meu select qdo tem dados na tabela 1 e não tiver dado na tabela 2 então retornam linha que só tem na tabela 1.
       
       
      Tabela 1(id, card)
      1, xxx
      2, yyy
      3, zzz
      4,xyz
       
      Tabela 2 (id, card, fraude)
      1, xxx, sim 
      2, yyy, sim
      3, zzz, pendente
       
      Select a.id, a.card, b.card, b.fraude
      from t1 a,t2 b
      where  a.card=b.card;
       
      Retorno:
      Id,Card,Card,fraude
      Nenhuma linha
      Ou não estou certo, retorna igual ao exemplo1:
      1, xxx,xxx,sim
      2, yyy,yyy,sim
      3, zzz,zzz,pendente
       
      Pergunto, neste exemplo 2 como faço pra retornar somente todas as linhas e se não tiver a linha na tabela 2 ficar com estes campos null? 
       
      Desta forma;
       
      Retorno:
      Id,Card,Card,fraude
      1, xxx,xxx,sim
      2, yyy,yyy,sim
      3, zzz,zzz,pendente
      4,xyz,null,null
      Ou no lugar de null, ficar vazia as colunas REF a tabela 2.
       
      Na vdd são exemplos, mas a qtd de Join é mais complexos
      Muito obrigado!!!!
       
       
       
       
    • By NaPraia
      buenas
       
      no sistema eu tenho uma tabela A com um campo que é do tipo NUMBER
      um outro sistema, tem uma tabela B que se relaciona com esse campo da tabela A, é que é do tipo NUMBER(19,2)
      Se relacionam corretamente mas não foi possível criar a constraint de FK
       
      não estou pensando em alter table pois pode gerar um caos no sistema
       
      verificar por trigger se já existe?
       
      obrigado
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.