在2个日期之间搜索问题 我在java中的sql语句
String sql ="Select * from Payment where Payment_Date between '"+date_1+"' and '"+date_2+"'";
它给我数据类型不匹配,我想我的问题发生在'“+ date_1 +”'和'“+ date_2 +”'??
date_1和date_2来自
Date date_1 = date1.getDate();
Date date_2 = date2.getDate();
答案 0 :(得分:2)
开始使用PreparedStatement,它会阻止SQL injections。请阅读this SO Q&A了解更多信息。
您可以这样做:
String sql ="Select * from Payment where Payment_Date between ? and ? ";
PreparedStatement pstmt = conn.prepareStatement(query);
pstmt.setDate(1, date_1 );
pstmt.setDate(2, date_2 );
// date_1 and date_2 objects should be of type java.sql.Date
确保在setXXX()
方法中设置正确的参数类型。请注意,如果Payment_Date
的数据类型为DATE
及相关类型,则需要在java.sql.Date方法中设置setDate()。如果列的数据类型为TIMESTAMP
,则使用java.sql.Timestamp和setTimestamp()方法。
脚注: -
如果您有一个java.util.Date
对象,则可以将其转换为java.sql.Date
:
java.sql.Date sqlDateObject = new java.sql.Date(utilDateObject.getTime());
答案 1 :(得分:0)
Date类的包必须是java.sql而不是java.util。
pstmt = conn.prepareStatement("Select * from Payment where Payment_Date between ? and ?");
pstmt.setDate(1, date_1);
pstmt.setDate(2, date_2);