在2个日期之间搜索

时间:2013-07-16 07:51:29

标签: java sql

在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();

2 个答案:

答案 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.TimestampsetTimestamp()方法。

脚注: -

如果您有一个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);