PreparedStatement是否在java中更改了字符串?

时间:2013-11-23 12:38:58

标签: java sql

PreparedStatement perst = con.prepareStatement(query);

      String S_DATE = s_date+" 00:00:00 CET";
      Timestamp S = Timestamp.valueOf(S_DATE);


      String E_DATE = e_date+" 00:00:00 CET";
      Timestamp E = Timestamp.valueOf(E_DATE);


      prest.setTimestamp(1,S);
      prest.setTimestamp(2,E);
      prest.setTimestamp(3,S);
      prest.setTimestamp(4,E);
      prest.setTimestamp(5,S);      
      prest.setTimestamp(6,E);  
      rs = prest.executeQuery(); 

//这样的事情呢?但我不知道在哪里使用setTimestamp()..非常感谢你的时间和efford btw!

1 个答案:

答案 0 :(得分:0)

作为参数传递的内容不是字符串参数。它是查询本身的一部分。该参数应该只是2007-10-10 00:00:00 CET其余的应该在查询本身。通过做你正在做的事情,查询实际上将是

WHERE S_DATE BETWEEN 'TIMESTAMP ''2007-10-10 00:00:00 CET''' ...

但是,不是将时间戳作为字符串传递并使用数据库函数将这些字符串转换为时间戳,而是最好使用java.sql.Timestamp传递setTimestamp()个实例。