PreparedStatement sql setDate

时间:2014-01-02 18:18:02

标签: java sql date

我有这个问题:

String sql ="select col1,col2,col3 from table where tstamp between '01/01/2014 00:00' and '01/01/2014 23:59'" ;

我想像这样使用PreparedStatementsetDate

String sql = "select col1,col2,col3 from table where tstamp between ? and ? " ;

PreparedStatement p = connection.prepareStatement(sql);

p.setDate(1,..);

我不知道怎么做..请帮忙

我尝试了新的Date(int,int,int)构造函数,但没有设置小时和分钟。

3 个答案:

答案 0 :(得分:1)

JDBC有三种时态类型,都在java.sql包中:

  1. 日期,其中包含没有时间的日期
  2. 时间,包含没有日期的时间
  3. 时间戳,包含日期和时间。
  4. 因此,您需要使用TimestampsetTimestamp() 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;
    }
}

More