为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

蓝山帝景 2022-09-28 15:45:18
我正在编写一个小型的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());



查看完整回答
反对 回复 2022-09-28
?
幕布斯7119047

TA贡献1794条经验 获得超8个赞

不能在 sql 查询中直接使用类型的变量myDatejava.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);

这将按预期工作。


查看完整回答
反对 回复 2022-09-28
?
慕雪6442864

TA贡献1812条经验 获得超5个赞

本地日期可以直接作为字符串在预置语句中传递**

jdbcTemplate.query(selectSqlQuery,
                    ps -> {
                        ps.setString(1, searchDate.toString());
                    }, new RowMapperForOutput());

查询:

从表1中选择*,其中日期(date_column)= ?


查看完整回答
反对 回复 2022-09-28
  • 3 回答
  • 0 关注
  • 108 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信