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

Responder a