Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java PreparedStatement sql setDate_Java_Sql_Date - Fatal编程技术网

Java PreparedStatement sql setDate

Java PreparedStatement sql setDate,java,sql,date,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'" ; 我想使用PreparedStatement来setDate如下: String sql = "select col1,col2,col3 from table where tstamp between ? and ? " ; PreparedStateme

我有一个疑问:

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,…)

我也不知道怎么做请帮忙

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

问题是java.sql中的对象与java.util中的对象不同

如果使用p.setDate(1,…);使用java.util.Date,您将失去时间。
一种可能的解决方案是将java.sql中的日期作为参数传递给Use
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;
    }
}

对于

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

  • 日期,其中包含没有时间的日期
  • 时间,它包含一个没有日期的时间
  • 时间戳,包含日期和时间
  • 因此,您需要使用,以及
    PreparedStatement
    setTimestamp()
    方法

    要从字符串构造时间戳实例,请使用
    SimpleDateFormat
    将字符串解析为
    java.util.Date
    对象,然后通过传递从该
    java.util.Date
    对象获得的毫秒来构造时间戳。

    可能重复的