Mysql
 sql >> Datenbank >  >> RDS >> Mysql

BETWEEN-Abfrage mit JDBC mit MySQL

In MySQL das DATE Typ wird der Java-Klasse java.sql.Timestamp zugeordnet . Sie sollten also mit diesem Typ arbeiten, um Ihre Abfrage zu erstellen, und nicht mit java.util.Date . Hier ist Code, der die beiden Zeitstempel generiert, die Sie benötigen:

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());

Verwenden Sie dann Ihren ersten BETWEEN Abfrage, um Ihr Ergebnis zu erhalten:

PreparedStatement ps = con.prepareStatement("SELECT * FROM project.order
                                             WHERE PO_Date BETWEEN ? AND ?");
ps.setTimestamp(1, start);
ps.setTimestamp(2, end)

Beachten Sie hier, dass ich ein parametrisiertes PreparedStatement verwende , wodurch die Möglichkeit einer SQL-Einschleusung vermieden (oder zumindest stark verringert) wird.