mysql 时区时间_MySql的时区(serverTimezone)引发的血案
前言
mysql8.x的jdbc升级了,增加了时区(serverTimezone)属性,并且不允许为空。
血案现场
配置jdbc的URL:jdbc:mysql://[IP]:[PORT]/[DB]?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true
应用运行一段时间后,发现数据库中登记的时间和正常的时间不一致。
查询表字段值:
而现在电脑的时间是:
问题排查
1、服务器时间不同步
使用命令:date,查看linux服务器时间
[root@abc ~]# date
Sat Mar7 18:43:30 CST 2020
服务器的机器时间没有问题
2、程序问题
uLog.setLogTime(new Date());
程序是使用的机器时间,不会有问题
3、数据库时间
查看数据库时间:select sysdate()
mysql>select sysdate();+---------------------+
| sysdate() |
+---------------------+
| 2020-03-07 18:48:01 |
+---------------------+
1 row in set
时间也是没有问题,最后考虑到jdbc增加了时区属性
问题根源
UTC是什么时区
不属于任意时区 。协调世界时,又称世界统一时间,世界标准时间,国际协调时间,简称UTC。
时区(Time Zone)是地球上的区域使用同一个时间定义。1884年在华盛顿召开国际经度会议时,为了克服时间上的混乱,规定将全球划分为24个时区。在中国采用首都北京所在地东八区的时间为全国统一使用时间。
例:已知东京(东九区)时间为5月1日12:00,求北京(东八区)的区时?北京时间=12:00-(9-8)=11:00(即北京时间为5月1日11:00)。
问题找到了,就是时区字段的问题
解决方法
修改jdbc时区,改成服务器所在地的真实时区
修改前:jdbc:mysql://[IP]:[PORT]/[DB]?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true
修改后:jdbc:mysql://[IP]:[PORT]/[DB]?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&rewriteBatchedStatements=true
重启应用,发现时间是正确的
+---------------------+
| log_time |
+---------------------+
| 2020-03-07 19:04:06 |
| 2020-03-07 19:04:03 |
| 2020-03-07 19:04:03 |
| 2020-03-07 19:04:03 |
| 2020-03-07 19:04:03 |
| 2020-03-07 19:04:03 |
| 2020-03-07 19:04:02 |
| 2020-03-07 19:04:02 |
| 2020-03-07 19:03:51 |
| 2020-03-07 10:40:35 |
| 2020-03-07 10:40:35 |
| 2020-03-07 10:40:35 |
mysql 时区时间_MySql的时区(serverTimezone)引发的血案相关推荐
- mysql地区时间_mysql – 带时区的日期时间格式
首先,阅读DATETIME和TIMESTAMP类型in the mysql docs. 然后,决定使用哪种字段类型: >如果要在不进行MySQL执行时区转换的情况下提交,存储和检索相同的值,请使 ...
- Linux shell不同时区时间转换(时区 夏令时 时间戳)
如果目标地区没有使用夏令时,可以日期或时间戳直接减去小时差,也可以使用下面兼容夏令时的方法. 概念: 时间戳 :从格林威治时间1970年01月01日00时00分00秒起至现在的总秒数. ...
- mysql timezone上海_MySql的时区(serverTimezone)引发的血案
前言 mysql8.x的jdbc升级了,增加了时区(serverTimezone)属性,并且不允许为空. 血案现场 配置jdbc的URL:jdbc:mysql://[IP]:[PORT]/[DB]?c ...
- mysql iso 时间_mysql 中 时间和日期函数
原文链接: mysql 中 时间和日期函数 - redfox - 博客园 http://www.cnblogs.com/redfox241/archive/2009/07/23/1529092.htm ...
- mysql存储过程时间_mysql时间操作函数和存储过程
因为业务须要统计一批数据.用到关于mysql的时间操作函数和存储过程,问题已经基本解决.把过程记录下: 1. mysql的语句中不支持直接用循环.循环仅仅能在存储过程中使用. 2. 写为文件时,注意一 ...
- mysql 时区设定_mysql的时区设置
IDEA配置mysql数据库时,地址,用户名,密码,数据库名填写之后,点测试连接,提示 Server returns invalid timezone. Go to 'Advanced' tab an ...
- mysql 默认时间_mysql中如何设置默认时间为当前时间?
展开全部 修改日期类型为timestamp 并允许空,如下: CREATE TABLE `test` (`aaaa` varchar(50) NOT NULL,`createday` timestam ...
- mysql 录入时间_Mysql录入时间不符
服务器是在放在韩国的, 使用strtotimei('Y-m-d H:i:s')后 打印的时间戳,如果拿回国内服务器,date('Y-m-d H:i:s',time())输出会少1个小时 第一个原因:p ...
- linux设置php时间,修改 linux 时区时间和 php 时区(示例代码)
问题:客户美国服务器时间不对 第一步,先修改硬件时区. vim /etc/sysconfig/clock 将 ZONE="America/New_York" 注释,加多一行 ZON ...
最新文章
- vue 巧用过渡效果
- php 图片上传预览(转)
- GitLab-CI与GitLab-Runner
- php中改变函数路由,php – 如何修改codeigniter中的路由
- 统计学的经典书籍指南 (转载自:http://blog.csdn.net/ysuncn/article/details/1943679)...
- ThreadLocal实现线程范围内的共享变量
- 建筑工程响应式网站模板
- 用exists代替distinct
- Leetcode每日一题:860.lemonade-change(柠檬水找零)
- net 将WebService生成dll文件
- 红米 android8 刷机,【红米6 安卓8.1线刷包】MIUI V9.6.7.0.OCGCNFD稳定版 线刷精简包...
- 无效镜像问题image has dependent child images
- tenforflow版YOLOv3下VOC数据集的准备和训练
- 国外教育邮箱购买?国外邮箱哪个好?
- 服务器系统浏览器打不开,电脑浏览器打不开解决方法
- IE/Firefox每次刷新时自动检查网页更新,无需手动清空缓存的设置方法(转)
- 永信至诚打造企业安全人才提升方案 补齐企业安全短板
- 当下的个人站长都用哪些模板做网站呢?
- 信息安全从业人员证书——CISP(附培训课件资料)
- 如何有效地进行代码 Review