Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

consulta BETWEEN usando JDBC com MySQL


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.