› Fóruns › SQL e PL/SQL › Resultados da pesquisa com mais de 50 dias › Responder a: Resultados da pesquisa com mais de 50 dias
Blz, Barizon, tudo bem ? Espero que sim…. Então, muito embora a linguagem SQL em si seja (mais ou menos) padronizada, pelo menos nos aspectos mais básicos, as FUNÇÕES , os DATATYPES e as Funcionalidades e Conceitos são muito MUITO diferentes entre os diversos SGBDs que utilizam a linguagem SQL…..
Então, JULGANDO pelo código que vc postou, essa query NÂO É de Oracle , pois essa built-in GETDATE ** não existe ** no Oracle (se usa SYSDATE no lugar), não existe datediff (pois o Oracle consegue fazer aritmética de datas, te dando o número de dias, naturalmente com os operadores de ADIÇÃO e de SUBTRAÇÂO…. Não tem jeito, só mesmo SQLs, o mais SIMPLES DO SIMPLES rodam sem diferenças ou quase isso em diferentes SGBDs…
Isso posto, a sua resposta : SUPONDO que é de ORACLE a sua dúvida (já que estamos num fórum de Oracle), SUPONDO que ** REALMENTE ** o datatype dessa coluna tent_recpdat_1 é DATE mesmo (não é NEM DE LONGE boa prática, mas tá CHEIO de apps pelaí que guardam datas em colunas STRING, por exemplo), AO QUE ENTENDI primeiro vc queria cálcular E exibir o número de dias (e NÚMERO DE DIAS apenas, e NÂO dias, horas, minutos, etc) entre HOJE e a data contida nessa coluna (data essa que é SEMPRE NO PASSADO), no RDBMS Oracle ficaria assim :
select tent_fornece_1, tent_nomefor_1, tent_nronota_1, TRUNC(SYSDATE – tent_recpdat_1) as dif_dias from notent ;
==> Muito bem…. Agora, além disso vc quer USAR essa coluna DIF_DIAS (que ** Não Existe ** na tabela, é uma coluna calculada FORA DO DATABASE pela query) como condição de filtro no WHERE, certo ? Num database controlado pelo RDBMS ORACLE, normalmente só é aceito no WHERE expressões que usem e/ou referenciem colunas que EXISTAM NO DATABASE, o que NÂO É o caso dessa DIF_DIAS…. A solução é SIMPLES, basta vc fazer um acesso EXTERNO, assim :
SELECT *
FROM (select tent_fornece_1, tent_nomefor_1, tent_nronota_1, TRUNC(SYSDATE – tent_recpdat_1) as dif_dias
from notent
)
WHERE
dif_dias > 50;
==> que aí vai beleza, sacou ??? Essas MÍNIMAS diferenças de funcionalidade, Conceito e built-ins não tem jeito, ABUNDAM entre diferentes SGBDs….