I MySQL, DATE
skriv mappar till Java-klassen java.sql.Timestamp
. Så du bör arbeta med den här typen för att bygga din fråga, och inte java.util.Date
. Här är kod som genererar de två tidsstämplarna du behöver:
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());
Använd sedan din första BETWEEN
fråga för att få ditt resultat:
PreparedStatement ps = con.prepareStatement("SELECT * FROM project.order
WHERE PO_Date BETWEEN ? AND ?");
ps.setTimestamp(1, start);
ps.setTimestamp(2, end)
Notera här att jag använder en parametriserad PreparedStatement
, vilket undviker (eller åtminstone avsevärt minskar) möjligheten för SQL-injektion.