I MySQL er DATE skriv kort til Java-klassen java.sql.Timestamp . Så du bør arbejde med denne type for at bygge din forespørgsel, og ikke java.util.Date . Her er kode, som genererer de to tidsstempler, du skal bruge:
SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
java.util.Date startDate = formatter.parse(startDate);
java.util.Date endDate = formatter.parse(endDate);
java.sql.Timestamp start = new Timestamp(startDate.getTime());
java.sql.Timestamp end = new Timestamp(endDate.getTime());
Brug derefter din første BETWEEN forespørgsel for at få dit resultat:
PreparedStatement ps = con.prepareStatement("SELECT * FROM project.order
WHERE PO_Date BETWEEN ? AND ?");
ps.setTimestamp(1, start);
ps.setTimestamp(2, end)
Bemærk her, at jeg bruger en parametriseret PreparedStatement , som undgår (eller i det mindste i høj grad mindsker) muligheden for SQL-injektion.