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.

Foi útil?

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
scroll top