Skip to main content
Announcements
Introducing a new Enhanced File Management feature in Qlik Cloud! GET THE DETAILS!
cancel
Showing results for 
Search instead for 
Did you mean: 
Anonymous
Not applicable

Error - Talend tMSSQLInput

Hi,

 

I have a problem with tMSSQl Input when I use a date to inform where clause, but, all the time Talend Studio return me the message: "tMSSqlInput_1 java.sql.SQLException: The conversion of a varchar data type to a DateTime data type resulted in an out-of-range value."

 

I look DbTypes on the schema, set date, and DateTime, but I don't understand and find any solution for my problem. In my database, the type about this column is DateTime.

 

Note: when I put, in the where clause, a date, the component works perfectly: AND HCA3.DATALT  BETWEEN '2018-04-30' AND '2018-06-11', but when I put de context information, the component doesn't work: AND HCA3.DATALT  BETWEEN '" + context.dt_inicio + "' AND '" + context.dt_fim + "'.

 

Can someone help me?

4 Replies
TRF
Champion II
Champion II

How are defined context variables, as String?
Anonymous
Not applicable
Author

Yes,

My context is string.
David_Beaty
Specialist
Specialist

Hi,

 

From the error you're getting, its SQL parsing the string value of a date into a date thats the problem.

 

Typically, but not always, dates are formatted yyyy-MM-dd, so check that is how you are forming the textual versions of your dates. This kind of problem can often be masked unless you're using days after the 12th of the month.

 

I think the tMSSQLInput component also has a global variable QUERY which is the text actually passed to SQL Server, check that if you copy/paste this into SSMS it works correctly as well.

 

Thanks

 

David

Anonymous
Not applicable
Author

Hi,

 

I found the solution! 0683p000009MACJ.png

 

To MSSQLinput work well, I need to develop some variables in SQL query to convert my context string to date format.

 

Look:

 

"declare @DataInicial datetime, @DataFinal datetime;

set @DataInicial= Convert(datetime, '" + context.dt_inicio + "', 103);
set @DataFinal= Convert(datetime, '" + context.dt_fim + "', 103)

 

and the where clause I put the variable that content:

 

AND HCA3.DATALT  BETWEEN @DataInicial AND @DataFinal)

"

 

Thanks for your time!