NamedJdbcParameterTemplate:-418 SQL错误,设置日期

时间:2014-09-08 23:05:40

标签: java sql spring db2

我的java类中有以下代码:

MapSqlParameterSource parameters = new MapSqlParameterSource();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

parameters.addValue("myDate", new java.sql.Date(this.sdf.parse(this.myDate).getTime()));
// this also not working : parameters.addValue("myDate", this.myDate);

SqlRowSet rs = namedParamJdbcTemplate.queryForRowSet(this.my_sql, parameters);

sql的位置是:

SELECT * FROM MYSCHEMA.MYTAB WHERE DATE(:myDate) < '2014-07-26'

代码失败并显示错误:

org.springframework.jdbc.BadSqlGrammarException: PreparedStatementCallback; bad SQL grammar [SELECT * FROM MYSCHEMA.MYTAB WHERE DATE(?) < '2014-07-26']; nested exception is com.ibm.db2.jcc.b.nm: DB2 SQL Error: SQLCODE=-418, SQLSTATE=42610, SQLERRMC=null, DRIVER=3.50.152

-418错误说:由于参数标记的使用方式无效,因此无法执行该语句。

问题是什么? 解决方案是什么?

1 个答案:

答案 0 :(得分:0)

尝试将DATE(:myDate)更改为CAST(:myDate AS DATE)。有时候,DB2非常特别关注&#34;无类型&#34;参数(即使您在此处使用DATE函数明确地将其强制转换)。

请查看我-418上的other answer