Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用java util日期选择数据库_Java_Sql_Date - Fatal编程技术网

使用java util日期选择数据库

使用java util日期选择数据库,java,sql,date,Java,Sql,Date,DB persistjava.util.date并且我需要一个查询来获取两个日期之间的所有数据,只需使用java.util.date. 我使用的是JPA2.1 String sql = "SELECT * FROM table WHERE created > '"+date1+"' AND created < '"+date2+"'"; String sql=“从创建>'“+date1+”和创建的表中选择*”; 此查询始终提供一个包含0个元素的列表问题是您的日期将作为字符串值添加

DB persist
java.util.date
并且我需要一个查询来获取两个日期之间的所有数据,只需使用
java.util.date.
我使用的是JPA2.1

String sql = "SELECT * FROM table WHERE created > '"+date1+"' AND created < '"+date2+"'";
String sql=“从创建>'“+date1+”和创建的表中选择*”;

此查询始终提供一个包含0个元素的列表

问题是您的日期将作为字符串值添加到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=“从创建的表中选择*”>“Wed May 25 14:33:18 SAST 2016”并创建了“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);
String sql=”“从创建的表中选择*>?并创建了<?”
//使用该SQL字符串创建查询对象,然后设置值
setParameter(1,date1);
setParameter(2,date2);

然后。

您可以尝试:Query q=em.createQuery(“从表m”+“其中m.created>:date1和m.created<:date2中选择m”);q.setParameter(“date1”,date1);q.setParameter(“date2”,date2);List results=(List)q.getResultList();