【发布时间】:2018-12-21 00:55:57
【问题描述】:
我正在使用 spring JDBCTemplate 来查询我的数据。
我的代码中有以下查询
static final String SQL = SELECT msgs.msg_submit_date MSG_DATE FROM {0}.messages msgs
WHERE TRUNC(msgs.msg_submit_date)
BETWEEN TO_DATE(:startDate,'YYYY-MM-DD') AND TO_DATE(:endDate,'YYYY-MM-DD') ;
String formattedSQL = MessageFormat.format(SQL , new Object[] "sms.schema"});
我在运行它时收到ORA-00904: "DD": invalid identifier 错误。我假设这是因为msg_submit_date 列有与之关联的HH:MI:SS,但是,我不想将HH:MI:SS 放在我的java 代码中。有年月日就足够了。
另外,当我在我的 Oracle SQL Developer IDE 中运行相同的查询时,它运行良好,没有任何错误,因此不确定出了什么问题。
日期通过java.time.LocalDate 使用以下格式生成:
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MM/d/yyyy");
返回以下字符串格式2018-06-03。
jdbc 调用:
jdbcTemplate.query(formattedSQL, params, new MessagesRowMapper())
我想可能是因为MessageFormat。
【问题讨论】:
-
向我们展示您的 Java 代码。 Edit 您的问题 - 请不要在 cmets 中提供邮政编码或其他信息。
-
@a_horse_with_no_name 我已经进行了编辑
-
单引号丢失;这真的是它看起来的样子,还是整个字符串都用双引号括起来?有必要吗? (另外,为什么你的
ofPattern()不匹配to_date()模式;为什么你传递字符串而不是直接绑定日期 - Spring 不允许这样做吗?) -
formattedSQL怎么样?你如何传递价值观?行映射器的代码在哪里?
标签: java sql oracle oracle-sqldeveloper