[实战]MySQL时间多了一秒

news/2024/12/15 12:36:17/

场景

同时保存一条数据在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`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4mysql> 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博客


http://www.ppmy.cn/news/1555292.html

相关文章

【C#设计模式(20)——观察者模式(Observer Pattern)】

前言 观察者模式 观察者模式:定义了一种对象之间的一对多依赖关系,消息发布者发布通知时,它的所有订阅者(依赖)对象都会自动收到通知并进行相应的更新。 代码 //抽象观察者类 public abstract class Observer {prote…

Java 小抄|解析 JSON 并提取特定层级数据

文章目录 前言环境准备依赖库 示例代码JSON 数据Java 类定义解析 JSON 数据代码解释 结论 前言 在日常开发中,我们经常需要从 JSON 数据中提取特定的信息。本文将介绍如何使用 Java 和 Gson 库解析 JSON 数据,并通过流式处理提取特定层级的数据。我们将…

有效的括号(字节面试题 最优解)

题目来源 20. 有效的括号 - 力扣(LeetCode) 题目描述 给定一个只包括 (,),{,},[,] 的字符串 s ,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号…

Qt之网络监测

在Qt中,网络监测通常涉及到检测网络连接状态、网络延迟、带宽使用情况等。Qt提供了一些类和模块来帮助开发者实现这些功能。以下是一些常用的方法和类: 1. 检测网络连接状态 QtNetwork模块中的QNetworkConfigurationManager类可以用来检测设备的网络连…

ConfyUI(sd-webui)-aki-v4.9.1升级安装Torch 2.5.1-CUDA12.4【含安装包】

总结: 原地升级操作三步走【要有一个能正常运行的aki-v4.9.1,先压缩备份它】: 一、在绘世-高级选项-安装PyTorch时,找到接近并且低于N卡CUDA驱动版本的版本,显示安装成功; 二、重启绘世-高级选项-原生组件…

将PDF流使用 canvas 绘制然后转为图片展示在页面上(二)

将PDF流转为图片展示在页面上 使用 pdfjs-dist 库来渲染 PDF 页面到 canvas 上,然后将 canvas 转为图片 安装 pdfjs-dist 依赖 npm install pdfjs-dist 或者 yarn add pdfjs-dist创建一个组件来处理 PDF 流的加载和渲染 该组件中是一个包含 PDF 文件的 ArrayBuffer…

OGG FOR MYSQL同步DDL

以下实验测试OGG FOR mysql 同步DDL, OGG 21.3 MYSQL 8.0.27 --创建测试数据 create table oggddl_20241201 (oid int primary key ,oname varchar(10)); create table oggddl_20241202 (oid int primary key ,oname varchar(10)); create table oggddl_20241203…

php仿199万年历程序源码的实现方法和成品黄历站展示

以下是一个简单的方案,包含了前端设计思路、后端逻辑和黄历计算的基本实现。 设计方案 1. 项目架构 核心文件: Calendar.php: 封装黄历计算逻辑。index.php: 入口文件,处理用户输入并调用黄历类。 2. 黄历类设计 (Calendar.php) 属性: date: 存储用户…