成都网站设计策划免费,专业关键词排名优化软件,重庆做网站公司有哪些,金点子创业项目场景
同时保存一条数据在MySQL和Redis中#xff0c;JAVA系统中显示Redis和MySQL数据差了一秒#xff0c;即MySQL比Redis中快了一秒。
复现
我们系统中MySQL的时间类型用的是timestamp#xff0c;问题是一样的。
CREATE TABLE test_date (id int(11) NOT NULL AUTO_INCRE…场景
同时保存一条数据在MySQL和Redis中JAVA系统中显示Redis和MySQL数据差了一秒即MySQL比Redis中快了一秒。
复现
我们系统中MySQL的时间类型用的是timestamp问题是一样的。
CREATE TABLE test_date (id int(11) NOT NULL AUTO_INCREMENT,date datetime DEFAULT NULL,PRIMARY KEY (id)
) ENGINEInnoDB AUTO_INCREMENT1 DEFAULT CHARSETutf8mb4mysql INSERT INTO test.test_date (date) VALUES (2022-12-05 11:40:49);
Query OK, 1 row affected (0.04 sec)mysql INSERT INTO test.test_date (date) VALUES (2022-12-05 11:40:49.449);
Query OK, 1 row affected (0.04 sec)mysql INSERT INTO test.test_date (date) VALUES (2022-12-05 11:40:49.500);
Query OK, 1 row affected (0.09 sec)mysql SELECT * FROM test.test_date;
-------------------------
| id | date |
-------------------------
| 1 | 2022-12-05 11:40:49 |
| 2 | 2022-12-05 11:40:49 |
| 3 | 2022-12-05 11:40:50 |
-------------------------
3 rows in set (0.00 sec) 原因
存储MySQL时使用的是MyBatis plus存储的时间会有毫秒数。 解决方案
方案一
入库时设置时间的毫秒值为0
/*** 设置时间的毫秒值为0** param date* return*/
public static Date getPreciseTime(Date date) {// 日历对象Calendar c Calendar.getInstance();// 设置时间c.setTime(date);// 设置毫秒值为0c.set(Calendar.MILLISECOND, 0);return c.getTime();
}方案二未验证 设置数据库精度
参考
解决时间字段存入MySQL数据库时间差一秒的问题_ob date类型 差1秒-CSDN博客