Qlik Community

Qlik Brasil

Group community for Brazil users. discussion only in Portuguese.

Highlighted
Not applicable

Data na clausula where com Oracle

Preciso fazer uma extração em banco Oracle com movimentos superiores a uma determinada data contida numa variável.o

Em banco Progress o seguinte comando funciona:f

from EMS5.TIT_ACR    WHERE YEAR(DAT_EMIS_DOCTO) >= '$(DAT_LIMITE)'

Em banco Oracle dá erro devido ao comando Year.

Alguém pode me ajudar ?

Tags (1)
11 Replies

Re: Data na clausula where com Oracle

A função YEAR não existe para o Oracle.

Não conheço muito ORACLE, mas acredito que você pode resolver seu problema com a função EXTRACT

EXTRACT( YEAR FROM date_field)

ou usando TO_DATE.

srchagas
Contributor III

Re: Data na clausula where com Oracle

Use assim TO_DATE('$(vIni)','DD/MM/YYYY HH24:MISmiley FrustratedS')

Not applicable

Re: Data na clausula where com Oracle

Pode reescrever a clausula abaixo utilizando este comando por favor ?

.... WHERE YEAR(DAT_EMIS_DOCTO) >= '$(DAT_LIMITE)'

srchagas
Contributor III

Re: Data na clausula where com Oracle

Vai depender de como está formatado a data no banco....Se o campo for do tipo DATE no oracle e formado com padrão : DIA-MES-ANO-Hora-minuto-Segundo

WHERE DAT_EMIS_DOCTO >= TO_DATE('$(DAT_LIMITE)','DD/MM/YYYY HH24:MISmiley FrustratedS')


caso o campo não seja Data :


WHERE TO_DATE(DAT_EMIS_DOCTO,'DD/MM/YYYY HH24:MISmiley FrustratedS') >= TO_DATE(''$(DAT_LIMITE)','DD/MM/YYYY HH24:MISmiley FrustratedS')


Se por um acaso o campo não tiver no padrão 'DD/MM/YYYY hh24:mi:ss', você pode formatar da melhor forma que quiser


srchagas
Contributor III

Re: Data na clausula where com Oracle

maiores informações:

Oracle/PLSQL: TO_DATE Function

Employee
Employee

Re: Data na clausula where com Oracle

Qual o erro específico? Pelo código fica mais fácil identificar.

Oracle possui a função YEAR YEAR function

Not applicable

Re: Data na clausula where com Oracle

Bom dia,

Tudo vai depender do formate que é passado para a variável "DAT_LIMITE".

Se você desejar retornar registros em que apenas o ano seja maior que "DAT_LIMITE = 2014", no oracle ficaria assim

SELECT *

FROM DUAL

WHERE TO_NUMBER(TO_CHAR('sysdate', 'yyyy')) > '$(DAT_LIMITE)'

Se o valor da sua variável é uma data sem os campos de horas (DAT_LIMITE = 01/02/2014) ficaria assim:

SELECT *

FROM DUAL

WHERE TRUNC(sysdate) > '$(DAT_LIMITE)'.

Abraços

Not applicable

Re: Data na clausula where com Oracle

Pode me auxiliar a colocar isto numa clausa select

Select * from tabela from where .......

srchagas
Contributor III

Re: Data na clausula where com Oracle

Amigo sem querer parecer rude mas isso ja foi segue a lista de exemplo:

Exmeplo 1 -

Select * from tabela where DAT_EMIS_DOCTO >= TO_DATE('$(DAT_LIMITE)','DD/MM/YYYY HH24:MISmiley FrustratedS')


Exemplo 2 -

Select * from tabela WHERE TO_DATE(DAT_EMIS_DOCTO,'DD/MM/YYYY HH24:MISmiley FrustratedS') >=TO_DATE(''$(DAT_LIMITE)','DD/MM/YYYY HH24:MISmiley FrustratedS')


Exemplo 3 -

SELECT *

FROM DUAL (troque DUAL por sua tabela)

WHERE TO_NUMBER(TO_CHAR('sysdate', 'yyyy')) > '$(DAT_LIMITE)'

Sysdate = Ano atual, função do própria do banco que pega isso.

Exemplo 4 -

SELECT *

FROM DUAL (troque DUAL por sua tabela

WHERE TRUNC(sysdate) > '$(DAT_LIMITE)'.

Sysdate = Ano atual, função do própria do banco que pega isso.