java Date 转mysql timestamp 秒数不一致

mysql的字段类型是timestamp(0), java的类型的是util.Date, 在插入数据的时候发现, 数据库的实际数据秒数比预想的数据偶尔会大1秒.

 

问题的原因:

  mysql的timestamp(0), 没有保留毫秒, 插入的时候, mysql会计算毫秒数, 所以会偶发数据库的秒数比参数大1秒.

 

解决方案:

  1: timestamp(0) 改为 timestamp(3), 保留3位的毫秒数

  2: 参数的毫秒值设置为0

  3: 修改数据库的字段类型, 存储时间戳 或者 用字符串存储,

  4: 降低mysql版本或者降低驱动版本(这种办法会把所有的毫秒数都忽略(000), 如果是时间精度要求高的业务就凉凉了, 不太推荐. mysql暂时还不能只设置成一个表一个字段忽略毫秒数)

相关文章