将java.sql.Date传递给sql查询

时间:2011-03-04 05:59:27

标签: jdbc

这是我的代码的一部分

java.sql.Date d1=java.sql.Date.valueOf("2011-03-02"); 
java.sql.Date d2=java.sql.Date.valueOf("2011-03-10"); 
java.sql.Date systemDate=java.sql.Date.valueOf("2011-03-04");

String sql="select id from period where '"+systemDate+"' between '"+d1+"' and '"+d2+"'";

这是我的代码。我希望得到这些日期之间的ID。但我没有得到理想的结果。我收回了表格中的所有内容。

2 个答案:

答案 0 :(得分:1)

当您使用其他SQL工具(例如pgadmin用于PostgreSQL或SQL Developer for Oracle)时,您是否有良好的结果?

然后尝试使用PreparedStatement。在你的情况下,这将是:

PreparedStatement pstmt = con.prepareStatement("select id from period where ? between ? and ?");
pstmt.setDate(1, systemDate);
pstmt.setDate(2, d1);
pstmt.setDate(3, d2);

答案 1 :(得分:0)

您没有使用表格中的字段与日期范围进行比较。

您正在做的是检查04-03-2011是否在02-03-2011和10-03-2011之间,对于每条记录都是如此。

你想做的是这样的(假设start_date是你表中的一列):

  String sql="select id from period where start_date between '"+d1+"' and '"+d2+"'";

(另外,我同意上面的答案,准备好的陈述是构建查询的更好方法。)