我的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
错误说:由于参数标记的使用方式无效,因此无法执行该语句。
问题是什么? 解决方案是什么?
答案 0 :(得分:0)
尝试将DATE(:myDate)
更改为CAST(:myDate AS DATE)
。有时候,DB2非常特别关注&#34;无类型&#34;参数(即使您在此处使用DATE
函数明确地将其强制转换)。
请查看我-418
上的other answer。