我正在编写一个小型的spring应用程序,它在以下代码的上下文中具有jdbc功能...我有以下爪哇来设置SQL查询字符串: String sql = "SELECT " + " a.Id, " + " a.USER_ID ", " + " a.LAST_UPDATED " + "from " + " Schema.AwesomeTable a " + "where " + " a.LAST_UPDATED >= ?";并且我正在尝试使用日期对象(让我们想象一下,为了这个问题的简短,我正在使用当前日期):Date myDate = new Date(); // This is a java.util.Date我像这样调用查询:List<Map<String, Object>> rows = jdbcTemplate.queryForList(sql, new Object[]{myDate});当我运行这个 - 我得到这个错误:2019-04-08 23:17:58 - Setting SQL statement parameter value: column index 1, parameter value [Tue Apr 08 23:17:58 CDT 2019], value class [java.util.Date], SQL type unknown我真的可以使用一些帮助 - 我已经搜索了到处,我找到了一些信息,但我没有看到任何我似乎能够掌握的东西。
3 回答
潇潇雨雨
TA贡献1833条经验 获得超4个赞
您可以将参数包装在以下位置,也可以使用:java.sql.Date
import java.util.Date;
import java.time.LocalDate;
LocalDate dateTime = // some date here
Date startDate = Date.from(dateTime.atStartOfDay(ZoneId.systemDefault()).toInstant());
幕布斯7119047
TA贡献1794条经验 获得超8个赞
不能在 sql 查询中直接使用类型的变量myDate
java.util.Date
Date myDate = new Date(); // This is a java.util.Date
您必须将其转换为类型,您可以执行以下操作:java.sql.Date
java.sql.Date sqlDate = new java.sql.Date(myDate.getTime());
之后,您可以调用查询,如下所示:
List<Map<String, Object>> rows = jdbcTemplate.queryForList(sql,sqlDate);
这将按预期工作。
慕雪6442864
TA贡献1812条经验 获得超5个赞
本地日期可以直接作为字符串在预置语句中传递**
jdbcTemplate.query(selectSqlQuery, ps -> { ps.setString(1, searchDate.toString()); }, new RowMapperForOutput());
查询:
从表1中选择*,其中日期(date_column)= ?
添加回答
举报
0/150
提交
取消