В MySQL, DATE
тип съпоставя с Java класа java.sql.Timestamp
. Така че трябва да работите с този тип, за да изградите заявката си, а не с java.util.Date
. Ето код, който генерира двете времеви марки, които ще ви трябват:
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());
След това използвайте първия си BETWEEN
запитване, за да получите резултата си:
PreparedStatement ps = con.prepareStatement("SELECT * FROM project.order
WHERE PO_Date BETWEEN ? AND ?");
ps.setTimestamp(1, start);
ps.setTimestamp(2, end)
Забележете тук, че използвам параметризиран PreparedStatement
, което избягва (или поне значително намалява) възможността за SQL инжекция.