当我尝试使用 java.sql.Timestamp 值插入 MySQL 5.6 中的 DATETIME 列时,我总是收到此错误:
com.mysql.jdbc.MysqlDataTruncation:数据截断:不正确的日期时间值:第 1 行的列 'invoice_date' 的''
该项目的原始开发人员拥有创建 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 的服务器上,这可以正常工作。我假设时间戳中的毫秒值导致转换为 DATETIME 的问题?由于原始作品在旧版本中。有没有办法解决这个问题而不必重新安装 5.0 的所有内容?