【问题标题】:DB select with java util date使用 java util date 选择数据库
【发布时间】:2016-05-25 12:31:54
【问题描述】:

数据库持久化java.util.date,我需要一个查询来获取两个日期之间的所有数据,仅使用java.util.date. 我用JPA 2.1

String sql = "SELECT * FROM table WHERE created > '"+date1+"' AND created < '"+date2+"'";

这个查询总是提供一个包含 0 个元素的列表

【问题讨论】:

  • 你可以试试:Query q = em.createQuery("Select m from table m" + "where m.created > :date1 and m.created 结果 = (List) q.getResultList();

标签: java sql date


【解决方案1】:

问题是您的日期被作为字符串值添加到 SQL 查询中。数据库正在得到类似的东西:

String sql = "SELECT * FROM table WHERE created > 'Wed May 25 14:33:18 SAST 2016' and created < 'Wed May 25 14:33:18 SAST 2016'";

数据库将它视为一个字符串,这就解释了它为什么不起作用。

解决它的唯一最佳方法是使用绑定变量::

String sql = ""SELECT * FROM table WHERE created > ? AND created < ?"
//Create the query object using that SQL string, then set values
sqlQuery.setParameter(1, date1);
sqlQuery.setParameter(2, date2);

然后execute the prepared statement

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-10
    • 1970-01-01
    • 1970-01-01
    • 2012-07-15
    相关资源
    最近更新 更多