sql >> Databasteknik >  >> RDS >> Mysql

BETWEEN-fråga med JDBC med MySQL

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.



  1. MySQL varför cursor.execute(sql, multi=True) inte fungerar men 2 cursor.execute(sql) fungerar?

  2. Markera Osänd e-post i SQL Server (T-SQL)

  3. Hur man MySQL arbetar skiftlägesokänslig och accentokänslig i UTF-8

  4. Varför får jag felmeddelandet Xml-datatypen stöds inte i distribuerade frågor när jag frågar en länkad server för icke-xml-data?