我有这个问题:
String sql ="select col1,col2,col3 from table where tstamp between '01/01/2014 00:00' and '01/01/2014 23:59'" ;
我想像这样使用PreparedStatement
到setDate
:
String sql = "select col1,col2,col3 from table where tstamp between ? and ? " ;
PreparedStatement p = connection.prepareStatement(sql);
p.setDate(1,..);
我不知道怎么做..请帮忙
我尝试了新的Date(int,int,int)
构造函数,但没有设置小时和分钟。
答案 0 :(得分:1)
JDBC有三种时态类型,都在java.sql
包中:
因此,您需要使用Timestamp和setTimestamp()
PreparedStatement
方法。
要从String构造Timestamp实例,请使用SimpleDateFormat
将String解析为java.util.Date
对象,然后通过传递从此java.util.Date
对象获得的毫秒来构造Timestamp。
答案 1 :(得分:0)
问题是来自 java.sql 的Date对象与 java.util
中的Date不同然后,如果你将 p.setDate(1,..); 与 java.util.Date 一起使用,你将失去 时间< / EM> 即可。 一种可能的解决方案可能是您从 java.sql
作为参数传递了一个Date答案 2 :(得分:0)
使用java.sql.Date
try{
sql = "select col1,col2,col3 from table where tstamp between ? and ? ;
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, /**Your Date**/);
pstmt.setString(2, /**Your Date**/);
rs = pstmt.executeQuery();
.
.
.
}catch (Exception e) {
e.printStackTrace();
}finally{
sql = null;
if(rs != null){
rs.close();
rs = null;
}
if(pstmt != null){
pstmt.close();
pstmt = null;
}
if(conn != null){
conn.close();
conn = null;
}
}