Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
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 ?
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.
Use assim TO_DATE('$(vIni)','DD/MM/YYYY HH24:MI:SS')
Pode reescrever a clausula abaixo utilizando este comando por favor ?
.... WHERE YEAR(DAT_EMIS_DOCTO) >= '$(DAT_LIMITE)'
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:MI:SS')
caso o campo não seja Data :
WHERE TO_DATE(DAT_EMIS_DOCTO,'DD/MM/YYYY HH24:MI:SS') >= TO_DATE(''$(DAT_LIMITE)','DD/MM/YYYY HH24:MI:SS')
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
maiores informações:
Qual o erro específico? Pelo código fica mais fácil identificar.
Oracle possui a função YEAR YEAR function
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
Pode me auxiliar a colocar isto numa clausa select
Select * from tabela from where .......
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:MI:SS')
Exemplo 2 -
Select * from tabela WHERE TO_DATE(DAT_EMIS_DOCTO,'DD/MM/YYYY HH24:MI:SS') >=TO_DATE(''$(DAT_LIMITE)','DD/MM/YYYY HH24:MI:SS')
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.