【问题标题】:Convert java.util.Date to java.sql.Date将 java.util.Date 转换为 java.sql.Date
【发布时间】:2016-02-14 14:00:33
【问题描述】:

我正在尝试在我的数据库中获取格式为“dd/MM/yyyy”的日期,并比较它们以获取最新日期..

我惊讶地发现它不能隐式或显式地进行转换——但我什至不知道该怎么做,因为 Java API 对我来说还是相当新的。有什么建议?看起来这应该是一个容易完成的壮举。

来自String last_updatedArr[]的数组结果:

12/11/2015
12/11/2015
12/11/2015
12/11/2015
12/11/2015
13/11/2015

方法:

public String latestDate(){

    String last_updated=null;
    try {
        String last_updatedDb=null;

        String query = "SELECT Last_updated FROM Mattress";
        PreparedStatement pst = conn.prepareStatement(query);

        ResultSet rs= pst.executeQuery();

        String last_updatedArr[]=new String[100];
        while(rs.next()){
            int i = 0;
            last_updatedDb=rs.getString("Last_updated");
            System.out.println(last_updatedDb);
            last_updatedArr[i]=last_updatedDb;
            i++;
        }

        SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
        java.sql.Date date1,date2;
        for(int i =0;i<last_updatedArr.length;i++){

            date1 = (java.sql.Date)sdf.parse(last_updatedArr[i]);
            date2 = (java.sql.Date)sdf.parse("1/1/2010");

            if(date1.after(date2)){
                //Date1 is after Date2
                last_updated= sdf.format(date1);
            }

            if(date1.before(date2)){
                //Date1 is before Date2
                last_updated= sdf.format(date2);
            }

            if(date1.equals(date2)){
                //Date1 is equal Date2
                last_updated= sdf.format(date1);
            }
        }
    } catch (ParseException e) {
        e.printStackTrace();
    }catch (SQLException e) {
        e.printStackTrace();
    }
    return last_updated;

}

【问题讨论】:

  • new java.sql.Date(utilDate.getTime())?
  • 我试过了,还是不行:(
  • 根据您的代码,您“似乎”不需要java.sql.Date,因为您的值只是Strings,但假设它们作为日期类型存储在您的数据库中,您可以使用getDate 而不是 getString,然后将返回 java.sql.Date。另外,我不清楚你的实际问题是什么
  • 我不知道发生了什么...但似乎问题解决了...我将数据库中的日期类型更改为字符串类型...T-T...TQ 寻求帮助

标签: java sql date datetime java.util.date


【解决方案1】:

您的循环在每次迭代时都会重置 i。在 while 循环中移动 i 的声明。或者只使用for 循环。喜欢,

for(int i = 0; rs.next(); i++) {
    last_updatedDb = rs.getString("Last_updated");
    System.out.println(last_updatedDb);
    last_updatedArr[i] = last_updatedDb;
}

之类的,

int i = 0;
while(rs.next()){
    // int i = 0;
    last_updatedArr[i] = rs.getString("Last_updated");
    System.out.println(last_updatedArr[i]);
    i++;
}

SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
java.sql.Date date1,date2;
// reuse i from while loop...
for(i = 0; i < last_updatedArr.length; i++){

【讨论】:

    猜你喜欢
    • 2011-08-29
    • 1970-01-01
    • 2014-04-19
    • 2018-04-03
    • 2012-08-21
    • 2015-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多