No MySQL, o
DATE
digite mapas para a classe Java java.sql.Timestamp
. Portanto, você deve trabalhar com esse tipo para criar sua consulta, e não com java.util.Date
. Aqui está o código que gera os dois timestamps que você precisará: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());
Em seguida, use seu primeiro
BETWEEN
query para obter seu resultado:PreparedStatement ps = con.prepareStatement("SELECT * FROM project.order
WHERE PO_Date BETWEEN ? AND ?");
ps.setTimestamp(1, start);
ps.setTimestamp(2, end)
Observe aqui que estou usando um
PreparedStatement
parametrizado , o que evita (ou pelo menos diminui bastante) a possibilidade de injeção de SQL.