当我尝试使用java.sql.Timestamp值插入到在MySQL 5.6 DATETIME列时,我总是得到这样的错误:java.sql.Timestamp中的错误插入DATETIME
com.mysql.jdbc.MysqlDataTruncation: Data truncation: Incorrect datetime value: '' for column 'invoice_date' at row 1
原此项目的开发人员具有创建Prepared语句的自定义JAR,以便将java.util.Date转换为Timestamp以插入到DATETIME中,反之亦然,以及处理的数据库连接。请注意,这是我的假设,因为没有关于它的文档。尝试使用时间戳通过的PreparedStatement插入到DATETIME我有同样的结果,使用类似:
ps.setTimestamp(3, new Timestamp(date.getTime()));
我要创建我自己的连接,这样我可以使用java.sql.Date来解决这个问题。但是,它会将结果的时间值归零。我用
ps.setDate(3, new java.sql.Date(date.getTime()));
我也得到类似
2013-06-27 00:00:00
在表中,因为我们知道java.sql.Date不存储的时间。
令人惊讶的是,在使用MySQL 5.0的服务器上,此功能正常工作。我假设Timestamp中的毫秒值导致问题转换为DATETIME?由于原作品在旧版本中。有没有什么办法可以解决这个问题,而无需重新安装5.0的所有内容?
使用Java.util.Date –
我无法在PreparedStatement中使用java.util.Date。它必须首先变成java.sql.Date。 –