“ORA-00936:expressão ausente” Consulta vinculada ao Oracle usando OpenQuery
-
12-12-2019 - |
Pergunta
Estou tentando executar a seguinte consulta:
SELECT *
FROM OPENQUERY
(
CLP,
'
SELECT *
FROM ORACLE_TABLE
WHERE [UPDATEDATE] > ''1900-01-01 12:00 AM''
'
)
Esta consulta funciona bem quando removo os critérios de data.Mas assim que tento passar neste critério não funciona mais.Não consigo descobrir o que estou perdendo.
Solução
Tente remover [
e]
e adicione a data de conversão:
SELECT *
FROM OPENQUERY
(CLP,
'
SELECT *
FROM ORACLE_TABLE
WHERE
UPDATEDATE > to_date(''1900-01-01 12:00'',''yyyy-mm-dd hh:mi'')
'
)
ou com am
SELECT *
FROM OPENQUERY
(CLP,
'
SELECT *
FROM ORACLE_TABLE
WHERE
UPDATEDATE > to_date(''1900-01-01 12:00 AM'',''yyyy-mm-dd hh:miam '')
'
)
Outras dicas
Usar
SELECT *
FROM OPENQUERY
(CLP,SELECT * FROM ORACLE_TABLE WHERE trunc(UPDATEDATE) > ''01-JAN-1900'')
Todas as datas sem componente de hora são padronizadas como 12h (ou 00h) no Oracle.
Você também pode usar to_timestamp(UPDATEDATE)
mas para que isso funcione, a coluna deve ser do tipo timestamp (ou seja,conter carimbo de data e hora, caso contrário, sempre daria 12h).Você também pode usar to_char(UPDATEDATE,'YYYY-MM-DD HH:MI AM')
.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow