【问题标题】:Error at ps.executeQuery(sql) while using sql with timestamps使用带时间戳的 sql 时 ps.executeQuery(sql) 出错
【发布时间】:2015-04-03 16:31:30
【问题描述】:

我从 JSP 获取日期并将它们转换为时间戳

DBConnection    = ConnMgr.getConnection();       
Timestamp timestamp1 = new java.sql.Timestamp(date1.getTime());
Timestamp timestamp2 = new java.sql.Timestamp(date2.getTime());

我有一个 sql 语句和准备好的语句如下

String sql      = " select * from images where uploadedOn>=? and uploadedOn<=?;";
ps              = DBConnection.prepareStatement(sql);
ps.setTimestamp(1, timestamp1);
ps.setTimestamp(2, timestamp2);
System.out.println(ps);

此打印语句在控制台中打印 this is in

select * from images where uploadedOn>='2015-02-02 00:00:00' and uploadedOn<='2015-02-05 00:00:00';

复制到 mySQL 工作台并运行时工作正常。但它在以下语句中给出错误

rs              = ps.executeQuery(sql);

错误是

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '? and uploadedOn<=?' at line 1

从昨天开始一直在为此苦苦挣扎。谁能帮我解决这个问题?

【问题讨论】:

  • 在运算符和值之间添加空格。
  • 从图片中选择 * 上传时间 >= '2015-02-02 00:00:00' 和上传时间
  • DBConnection是你写的类吗?如果是,请显示代码。
  • 我收到了错误。我用ps.executeQuery(); 替换了ps.executeQuery(sql);,它工作正常

标签: java mysql sql-server jdbc timestamp


【解决方案1】:

语句已经准备好了,你不需要执行另一个查询

rs = ps.executeQuery();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-25
    • 1970-01-01
    • 2019-01-16
    • 1970-01-01
    • 1970-01-01
    • 2021-08-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多