Conseguem ver essa imagem : https://ibb.co/eZ1Y1H
2018-02-05 15:57 GMT-02:00 [email protected] [oracle_br] < [email protected]>: > > > Colega, ** PLEASE ** explica pra gente : essa tal coluna p.prazogarantia é > um Número, ou uma Data, ou o que ?? E SE for um Número, ele representa > qtdade de DIAS, de MESES, de ANOS, ou o que ??? E essa tal outra coluna > f.dtsaida , é REALMENTE uma coluna com datatype DATE ??? > Isso é *** CRÍTICO *** a gente saber, pois no RDBMS Oracle SYSDATE > retorna uma data , e uma substração ou Adição entre DATAs retorna um número > FRACIONÁRIO que é o número de dias MAIS a fração de um dia decorrido... > > ==> SE REALMENTE essa coluna prazogarantia for o NÚMERO DE DIAS da > garantia, contados a partir da coluna dtsaida que REALMENTE é uma DATA e > não algum tipo de string, MUITO PROVAVELMENTE teu erro tá no FATO de que > dtsaida é uma DATA DO PASSADO, e (ÓBVIO!!!) data de hoje - data do passado > *** NUNCA ** vai dar negativo, exemplo : > > => hoje é dia 05/02/2018 : > > scott@BD_TESTE:SQL>select to_char(sysdate, 'dd/mm/yyyy') from dual; > > TO_CHAR(SY > ---------- > 05/02/2018 > > scott@BD_TESTE:SQL> > > ==> crio a tabela e insiro uns dadinhos de testes : > > scott@BD_TESTE:SQL>create table TAB_TESTE_GARANTIA ( > 2 CODPROD number, > 3 DTSAIDA date, > 4 PRAZOGARANTIA number ); > > Tabela criada. > > ==> Insiro dois registros, um dentro e outro fora da qtdade de dias > especificada : > > scott@BD_TESTE:SQL>insert into TAB_TESTE_GARANTIA values(1, > TO_DATE('05/01/2018', 'dd/mm/yyyy'), 90); > > 1 linha criada. > > scott@BD_TESTE:SQL>insert into TAB_TESTE_GARANTIA values(2, > TO_DATE('05/01/2015', 'dd/mm/yyyy'), 100); > > 1 linha criada. > > ==> Taí o resultado : > > scott@BD_TESTE:SQL>select codprod, dtsaida, prazogarantia, sysdate - > dtsaida qtd_dias from TAB_TESTE_GARANTIA; > > CODPROD DTSAIDA PRAZOGARANTIA QTD_DIAS > --------- ------------------- ------------- --------- > 1 05/01/2018 00:00:00 90 31,661065 > 2 05/01/2015 00:00:00 100 1127,6611 > > scott@BD_TESTE:SQL> > > ==> Vc estaria CERTO em perguntar por negativo apenas se vc estivesse > fazendo data do passado menos data de hoje : > > scott@BD_TESTE:SQL>select codprod, dtsaida, prazogarantia, dtsaida - > sysdate qtd_dias from TAB_TESTE_GARANTIA; > > CODPROD DTSAIDA PRAZOGARANTIA QTD_DIAS > --------- ------------------- ------------- --------- > 1 05/01/2018 00:00:00 90 -31,66343 > 2 05/01/2015 00:00:00 100 -1127,663 > > scott@BD_TESTE:SQL> > > []s > > Chiappa > > -- Eduardo Perdomo Consultor de Implantação Grupo PC Sistemas - www.grupopc.com.br (21) 6845-8592 [email protected] [email protected] Blog: eduardo.perdomo.nom.br
