Skip to main content
Announcements
Have questions about Qlik Connect? Join us live on April 10th, at 11 AM ET: SIGN UP NOW
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

ErrorCode: 932, ErrorMsg: [Oracle][ODBC][Ora]ORA-00932: inconsistent datatypes: expected DATE got NUMBER

Bom dia

Preciso de uma ajuda, estou tentando trazer dados a partir de uma data colocando essa data em uma where, porem me retornar esse erro: Connector reply error: SQL##f - SqlState: S1000, ErrorCode: 932, ErrorMsg: [Oracle][ODBC][Ora]ORA-00932: inconsistent datatypes: expected DATE got NUMBER

Alguém sabe me explicar o porque?

Segue código abaixo:

LET vMAX_DATA = '01/01/2017'

FUNC:

LOAD CODPESSOA as ID,

CODCOLIGADA,

    CHAPA,

    NROFICHAREG;

SQL SELECT *

FROM RM.PFUNC

WHERE DATADEMISSAO >= $(vMAX_DATA);


Desde já agradeço.

1 Solution

Accepted Solutions
Not applicable
Author

Consegui achar a solução desse jeito:

TEMP:

LOAD CODPESSOA,

CODCOLIGADA,

CHAPA,

NROFICHAREG;

SQL SELECT *

FROM RM.PFUNC;


LOAD CODPESSOA as ID_CODPESSOA,

CODCOLIGADA&CHAPA as ID,

NROFICHAREG

Resident TEMP

WHERE DATADEMISSAO >= '01/01/2017' OR ISNULL(DATADEMISSAO);


DROP TABLE TEMP;


Obrigado pela atenção e ajuda pessoal.


Abraço.

View solution in original post

8 Replies
vinieme12
Champion III
Champion III

Marcio_Campestrini
Specialist
Specialist

Bom dia

Além da sugestão do Vineeth, observe o tipo de dados do campo DATADEMISSAO. Isso vai indicar qual a operação que você deve usar para resolver o caso.

Márcio Rodrigo Campestrini
afurtado
Partner Ambassador/MVP
Partner Ambassador/MVP

tenta usar 

to_char(DATADEMISSAO ,'DD/MM/YYYY')

furtado@farolbi.com.br
afurtado
Partner Ambassador/MVP
Partner Ambassador/MVP

exemplo

Where to_char(DATADEMISSAO ,'YYYY') > '2016'

furtado@farolbi.com.br
jonas_rezende
Specialist
Specialist

Edvaldo Gutierres.

Tente assim:

LET vMAX_DATA = Date('01/01/2017','DD/MM/YYYY');

FUNC:

LOAD CODPESSOA as ID,

CODCOLIGADA,

    CHAPA,

    NROFICHAREG;

SQL SELECT *

FROM RM.PFUNC

WHERE DATADEMISSAO >= to_date('$(vMAX_DATA)','DD/MM/YYYY');


Espero ter ajudado!

Clever_Anjos
Employee
Employee

Quando for passar parametros para SQL de banco você usualmente tem duas opções

  • Use o formato YYYY-MM-DD na sua string
  • Ou use o TO_DATE (Oracle) / CONVERT (SQL Server) para garantir que o banco irá entender que seu parâmetro é uma data
Not applicable
Author

Consegui achar a solução desse jeito:

TEMP:

LOAD CODPESSOA,

CODCOLIGADA,

CHAPA,

NROFICHAREG;

SQL SELECT *

FROM RM.PFUNC;


LOAD CODPESSOA as ID_CODPESSOA,

CODCOLIGADA&CHAPA as ID,

NROFICHAREG

Resident TEMP

WHERE DATADEMISSAO >= '01/01/2017' OR ISNULL(DATADEMISSAO);


DROP TABLE TEMP;


Obrigado pela atenção e ajuda pessoal.


Abraço.

Clever_Anjos
Employee
Employee

Sua solução funciona mas poderia ser um pouco melhor em termos de performance se mantiver o where no SQL, pois você está trazendo tudo para o Qlik para depois filtrar.

Mas se está rápido, don´t worry