【问题标题】:mysql: finding groups of records within a specified time period in Javamysql:在Java中查找指定时间段内的记录组
【发布时间】:2016-04-10 10:40:44
【问题描述】:

我想用Java链接mysql数据库,执行查询返回指定时间段的记录,最后在java中以表的形式呈现结果。 如何将输入字符串转换为mysql有效日期并输出结果? 我试过了,但失败了。

Connection con = DBCon.dbcon();
java.util.Date t1= new SimpleDateFormat("yyyyMMdd").parse(jTextField2.getText());
java.util.Date t2= new SimpleDateFormat("yyyyMMdd").parse(jTextField3.getText());

PreparedStatement query = con.prepareStatement(SELECT * FROM transaction WHERE TransactionDate >= ? and TransactionDate <=  '"+t1+"' and id1=?);

ResultSet rs = query.executeQuery();

非常感谢!!!

【问题讨论】:

    标签: java mysql prepared-statement


    【解决方案1】:

    您必须将参数设置为PreparedStatement 实例,如下所示:

    Connection con = DBCon.dbcon();
    java.util.Date t1= new SimpleDateFormat("yyyyMMdd").parse(jTextField2.getText());
    java.util.Date t2= new SimpleDateFormat("yyyyMMdd").parse(jTextField3.getText());
    
    PreparedStatement query = con.prepareStatement(SELECT * FROM transaction WHERE TransactionDate >= ? AND TransactionDate <= ? AND id1 = ?);
    query.setDate(1,new java.sql.Date(t1.getTime()));
    query.setDate(2,new java.sql.Date(t2.getTime()));
    query.setLong(3,id);// Assuming Datatype of Id to Long and value in variable id, Change accordingly if not.
    
    ResultSet rs = query.executeQuery();
    

    编辑:将 setDate 的数据类型从 java.util.Date 更改为 java.sql.Date

    【讨论】:

    • query.setDate(1,t1); query.setDate(2,t2) 恐怕这不对,在表中事务日期时间是第 2 列,我想要记录从 t1 到 t2 的时间
    • Query中有三个参数 SELECT * FROM transaction WHERE TransactionDate >= ? AND 交易日期
    • 这是我的错。但是“query.setDate(1,t1)”中有问题,它说 t1 不是日期类型。
    • 在 setDate() 中传递的日期应该是 java.sql.Date 的即时值,您必须将 t1 和 t2 的数据类型从 java.util.Date 更改为 java.sql.Date
    • 您可能希望分别在索引 1 和 2 处传递 new java.sql.Date(t1.getTime()) 和 new java.sql.Date(t2.getTime())。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多