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.