我正在编写一个小型的Spring应用程序,它在以下代码的上下文中具有jdbc功能...
我具有以下Java来设置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
我真的可以使用一些帮助-我到处都在Google周围搜索,并且找到了一些信息,但是我似乎看不到任何东西。
答案 0 :(得分:0)
您可以将参数包装在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());
答案 1 :(得分:0)
您不能在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);
将按预期工作。