0

在java中的2个日期我的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();
4

2 回答 2

2

开始使用PreparedStatement,它将防止SQL 注入。阅读此 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_DateisDATE和相关类型的数据类型,您需要在setDate()方法中设置java.sql.Date 。如果列的数据类型是,则使用java.sql.TimestampsetTimestamp()方法。TIMESTAMP

脚注:-

如果您有一个java.util.Date对象,您可以将其转换java.sql.Date为:

java.sql.Date sqlDateObject = new java.sql.Date(utilDateObject.getTime());
于 2013-07-16T07:54:40.283 回答
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);
于 2013-07-16T07:57:15.777 回答