数据截断:日期时间值不正确:”

任何人都可以帮助我使用示例JSP代码通过JDBC将日期存储在MySql数据库中吗? 当我尝试执行下面给出的代码时,我得到以下exception:

com.mysql.jdbc.MysqlDataTruncation:数据截断:日期时间值不正确:”对于第1行的列’date’

如何克服这个问题? 以下是我的代码:

Connection con = null; String StaffName = request.getParameter("StaffName"); // String subcode = request.getParameter("subcode"); String hourId = request.getParameter("hourId"); if (hourId == null) hourId = ""; String day = request.getParameter("day"); if (day == null) day = ""; String date = request.getParameter("date"); try { Class.forName("com.mysql.jdbc.Driver"); con = DriverManager.getConnection("jdbc:mysql://localhost:3306/StaffAllocation", "root", "success"); // PreparedStatement stat = con.PrepareStatement(); String updateString = "INSERT INTO tblstaffallocation (StaffName,hourId,daysId,date) VALUES (?,?,?,?)"; PreparedStatement preparedStatement = con.prepareStatement(updateString); preparedStatement.setString(1, StaffName); preparedStatement.setInt(2, 0); preparedStatement.setInt(3, 0); preparedStatement.setString(4, date); } catch (Exception e) { out.print(e); } 

要将日期设置为准备好的语句,您需要更改值的类型:

 String date = request.getParameter("date"); SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); // your template here java.util.Date dateStr = formatter.parse(date); java.sql.Date dateDB = new java.sql.Date(dateStr.getTime()); 

现在将String date转换为java.sql.Date并使用另一种方法:

 preparedStatement.setDate(4,dateDB); 

我有类似的错误。 事实certificate我只需更新mysql-connector-java的jar版本(使用maven)

   mysql mysql-connector-java ...  

尝试重新格式化日期

  String date = new SimpleDateFormat("yyyy-MM-dd").format(new Date(request.getParameter("date"))) 

然后插入数据库。 请注意,request.getParameter(“date”)的格式应为11/20/2013,以使其正常工作,或者您可以使用类似的方式来实现。

如果某人的实体字段有类似的错误,数据类型注释为@Temporal ,我的解决方案是用TemporalType.TIME替换注释值TemporalType.TIME

 @Temporal(TemporalType.TIMESTAMP) private Date dateField; 

应该是这样的:

 @Temporal(TemporalType.TIME) private Date dateField; 

解决此问题的另一种方法是在没有任何代码更改的情况下(至少对我而言)是在更高的Tomcat版本上运行应用程序,希望它会有所帮助。

确保您尝试插入表中的Date值完全采用表的日期列中定义的格式。

在此处输入图像描述

我知道这是一个老线程,但这些解决方案都没有解决我的问题。 对我来说有用的是将hibernate升级到版本5.2.10.Final(参见这篇SOpost )。

运行Spring Boot和Spring Data JPA 1.5.4.RELEASE和hibernate 5.2.10.Final。