【问题标题】:java.util.Date cannot be cast to java.sql.Date [duplicate]java.util.Date 不能转换为 java.sql.Date [重复]
【发布时间】:2015-04-03 14:33:37
【问题描述】:

我正在尝试将日期插入数据库,但由于 java.util.Date 无法转换为 java.sql.Date,因此出现错误。 请帮忙。

String next_dt = req.getParameter("NextDate");
DateFormat dtFmt = null;
dtFmt = new SimpleDateFormat("yyyy-MM-dd");
dtToday = (Date) dtFmt.parse(next_dt);

【问题讨论】:

  • 那是因为java.util.Date 不是java.sql.Date 的孩子,反之亦然。我相信你可以使用new java.sql.Date(dtToday.getTime());
  • sqlDate = new Date(javaDate.getTime()); 我认为 dtToday 是您要插入的日期。您需要将其转换为 sql 日期

标签: java oracle servlets


【解决方案1】:

添加以下行 - 因为它需要是 sql Date 而不是 util date

java.sql.Date sqlDate = new java.sql.Date(dtToday.getTime());
//now insert this sqlDate

【讨论】:

    【解决方案2】:

    您应该使用java.sql.Timestamp 或java.sql.Date 而不是java.util.Date java.sql.Date 的问题是它不会存储时间。所以使用时间戳是我一直采用的方法。因为它是java.util.date 的子类,所以它兼容DB 中的日期和时间戳列。

    【讨论】:

      【解决方案3】:
      public static java.sql.Date convertFromJAVADateToSQLDate(
              java.util.Date javaDate) {
          java.sql.Date sqlDate = null;
          if (javaDate != null) {
              sqlDate = new Date(javaDate.getTime());
          }
          return sqlDate;
      }
      

      由于类名相同,因此应给出两个类的完全限定名(FQN),您也可以使用格式方法将日期转换为正确的 SQL 格式日期。

      public static String toMysqlDateStr(Date date) {
      String dateForMySql = "";
      if (date == null) {
          dateForMySql = null;
      } else {
          SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
          dateForMySql = sdf.format(date);
      }
      
      return dateForMySql;
      

      }

      【讨论】:

        【解决方案4】:

        DateFormat.parse() 返回一个java.util.Date,而您正试图将其非法转换为java.sql.Date。

        假设你继续导入java.sql.Date,你可以像这样成功地分配变量:

        dtToday = new Date(dtFmt.parse(next_dt).getTime());
        

        【讨论】:

        • 仍然无法插入数据库..
        【解决方案5】:

        您已导入java.sql.Data。但是dtFmt.parse(next_dt); 返回一个java.util.Date 类型的对象,所以你必须改变

        import java.sql.Date;
        

        到

        import java.util.Date;
        

        【讨论】:

        • 我也试过了,但后来我无法将 dtToday 插入表中。
        • 如果您需要sql语句的日期,您必须将java.Util.Date转换为java.sql.Date,请参阅here如何做到这一点。
        猜你喜欢
        • 1970-01-01
        • 2018-04-03
        • 1970-01-01
        • 2012-08-21
        • 2011-08-29
        • 2016-02-14
        • 2014-04-19
        • 2019-05-05
        • 1970-01-01
        相关资源
        最近更新 更多