MySQLでは、DATE
タイプはJavaクラスjava.sql.Timestamp
にマップされます 。したがって、java.util.Date
ではなく、このタイプを使用してクエリを作成する必要があります。 。必要な2つのタイムスタンプを生成するコードは次のとおりです。
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インジェクションの可能性を回避(または少なくとも大幅に削減)します。