对于java中Date转MySql中datetime类型小时丢失问题
- 如果直接使用preparedStatement的setDate方法转换会导致丢失精度
String sql = "update books_china set price=?,bname=?,publishData=? where id=?";
PreparedStatement preparedStatement = connection.prepareStatement(sql);
DateFormat format = new SimpleDateFormat("yyyy-MM-dd kk:mm:ss");
String str = "1999-12-12 21:10:39";
Date date = format.parse(str);
实现结果 可以看到 时间精度丢失了
- 使用setTimestamp方法可以避免此类问题
preparedStatement.setTimestamp(3,new Timestamp(date.getTime()));
实现结果 原理:
DATE 精度 天 不保存时区信息 DATETIME 精度 微秒 不保存时区信息 TIMESTAMP 精度 微秒 保存时区信息
|