jdbc模板 - 查询列表 - 传递日期?

我正在编写一个小型的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

我真的可以使用一些帮助 - 我已经搜索了到处,我找到了一些信息,但我没有看到任何我似乎能够掌握的东西。


蓝山帝景
浏览 121回答 3
3回答

潇潇雨雨

您可以将参数包装在以下位置,也可以使用:java.sql.Dateimport java.util.Date;import java.time.LocalDate;LocalDate dateTime = // some date hereDate startDate = Date.from(dateTime.atStartOfDay(ZoneId.systemDefault()).toInstant());

幕布斯7119047

不能在 sql 查询中直接使用类型的变量myDatejava.util.DateDate&nbsp;myDate&nbsp;=&nbsp;new&nbsp;Date();&nbsp;//&nbsp;This&nbsp;is&nbsp;a&nbsp;java.util.Date您必须将其转换为类型,您可以执行以下操作:java.sql.Datejava.sql.Date&nbsp;sqlDate&nbsp;=&nbsp;new&nbsp;java.sql.Date(myDate.getTime());之后,您可以调用查询,如下所示:List<Map<String,&nbsp;Object>>&nbsp;rows&nbsp;=&nbsp;jdbcTemplate.queryForList(sql,sqlDate);这将按预期工作。

慕雪6442864

本地日期可以直接作为字符串在预置语句中传递**jdbcTemplate.query(selectSqlQuery, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ps&nbsp;->&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ps.setString(1,&nbsp;searchDate.toString()); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},&nbsp;new&nbsp;RowMapperForOutput());查询:从表1中选择*,其中日期(date_column)= ?
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java