如何在java中使用sql数据库中的日期改进搜索

时间:2017-10-16 11:54:41

标签: java sql-server

我使用java语言和MS SQL Server作为数据库制作了一个软件。我面临的问题是,当我使用两个日期搜索日期范围时,它会提供我未请求的项目。

例如,如果我需要10月1日至7日的物品,则包括11日,12日,13日,14日,15日,16日等物品。

使用MMM的日期格式d,yyyy

我使用了以下代码

String val1 = ((JTextField)jdate1.getDateEditor().getUiComponent()).getText();
String val2 = ((JTextField)jdate2.getDateEditor().getUiComponent()).getText();

String sql = " select * from Report_details where Date between '"+val1+"' and '"+val2+"' ";

// conn is some Connection                   
PreparedStatement myStmt = conn.prepareStatement(sql);
ResultSet rs = myStmt.executeQuery();

if(rs.next()){
    // do stuff
}

1 个答案:

答案 0 :(得分:1)

不信任用户输入。

String sql = "select * from Report_details where Date between ? and ?";    
....
Date dt1 = new SimpleDateFormat("MMM d,yyyy").parse(val1);
// better yet, have your date picker return a Date object
....
myStmt.setDate(1, dt1);
....

应该是要去的方式(或setTime或setTimestamp,具体取决于你的表定义)

注意:不要复制粘贴,只是提示让你朝正确的方向走。