关于Mysql 的时区问题
问题:
遇到这样一个问题,Mysql的时区,没有设置,默认是时区是0,在java代码中对应的字段类型是TimeStamp,mysql字段类型也是TimeStamp
项目A
- 代码中获取到的时间 是正确的。
- 写到数据库的时间也是对的。
- 从数据库读取出来时间是正确的
项目B
- 代码中获取的时间是对的
- 写到数据库的时间,慢8小时
- 从数据库读取出来时间,却是正确的。(也就是说比数据库中的时间快8小时)
原因:
经过不断的尝试,探索终于发现时mysql-connector-java
的版本问题,项目A使用的版本是5.1.41
,项目B使用的8.0.11
。写入数据时,这个版本会自动根据,传入时间的时区和mysql的时区,自动把时间进行调整
服务器的mysql版本是5,如果服务器的mysql版本是8,则项目不能使用5版本的mysql-connector-java库
解决:
当然可以直接注释掉,版本这条代码,默认使用5.1.41
,正确设置mysql时区,感觉会比较优雅一点
<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><!--<version>8.0.11</version>--><scope>runtime</scope>
</dependency>
##查看mysql当前时间和时区
> select curtime(); #或select now()也可以
+-----------+
| curtime() |
+-----------+
| 15:18:10 |
+-----------+> show variables like "%time_zone%";
+------------------+--------+
| Variable_name | Value |
+------------------+--------+
| system_time_zone | CST |
| time_zone | SYSTEM |
+------------------+--------+
2 rows in set (0.00 sec)
time_zone说明mysql使用system的时区,system_time_zone说明system使用CST时区
修改时区:
第一种方法:
这种方法,不需要重启mysql,但是重启mysql,需要再次设置
> set global time_zone = '+8:00'; ##修改mysql全局时区为北京时间,即我们所在的东8区
> set time_zone = '+8:00'; ##修改当前会话时区
> flush privileges; #立即生效
第二种方法:
# vim /etc/my.cnf ##在[mysqld]区域中加上
default-time_zone = '+8:00'# /etc/init.d/mysqld restart ##重启mysql使新时区生效
附录1:SET time_zone = ‘+8:00’可以使用+8:00也可以使用Asia/Shanghai,如SET time_zone = ‘Asia/Shanghai’
+8:00指东八区,顾名思义,-7:00就是指西七区
附录2:那对于购买的云数据库实例呢,如AWS的RDS?这样要怎么办?
具体可以看我的这篇文章:更改亚马逊AWS RDS实例的mysql时区
附录3:关于system_time_zone,time_zone的官方说明
MySQL Server Time Zone Support
参考:
mysql修改时区的几种方法
MySQL时间慢了八个小时
mysql 自动时间戳和系统时间差八小时的解决
关注我的公众号,轻松了解和学习更多技术
关于Mysql 的时区问题相关推荐
- [转]MySQL修改时区的方法小结
本文转自:https://www.cnblogs.com/mracale/p/6064447.html 这篇文章主要介绍了MySQL修改时区的方法,总结分析了三种常见的MySQL时区修改技巧,包括命令 ...
- JDK8中好用的日期处理-LocalDate类-LocalTime-LocalDateTIme,mysql解决时区相差13小时的问题,日期格式器DateTimeFormatter
JDK8中好用的日期处理-LocalDate类-LocalTime-LocalDateTIme,mysql解决时区相差13小时的问题,日期格式器DateTimeFormatter 参考文章: (1)J ...
- 如何设置MySQL的时区?
本文翻译自:How do I set the time zone of MySQL? On one server, when I run: 在一台服务器上,当我运行时: mysql> selec ...
- mysql 设置时区,【MySQL】修改时区设置
实践中遇到的一个问题,开发环境的时间数据一切正常,但正式环境数据库中的时间数据与实际相比差了8个小时.根据以往的PHP时区问题经验,断定问题处在MySQL的时区设定上. 用命令行连上去看一下时间,可以 ...
- 数据库时区那些事儿 - MySQL的时区处理
原文地址 当JVM时区和数据库时区不一致的时候,会发生什么?这个问题也许你从来没有注意过,但是当把Java程序容器化的时候,问题就浮现出来了,因为目前几乎所有的Docker Image的时区都是UTC ...
- IDEA连接mysql出现时区错误_idea连接数据库时区错误
错误界面 IDEA连接mysql,地址,用户名,密码,数据库名,全都配置好了,点测试连接,咔!不成功! 界面是这样的, 翻译过来就是:服务器返回无效时区.进入"高级"选项卡,手动设 ...
- mysql内部时区_一文解决MySQL时区相关问题
前言: 在使用MySQL的过程中,你可能会遇到时区相关问题,比如说时间显示错误.时区不是东八区.程序取得的时间和数据库存储的时间不一致等等问题.其实,这些问题都与数据库时区设置有关,本篇文章将从数据库 ...
- mysql印度时区_一次 JDBC 与 MySQL 因 “CST” 时区协商误解导致时间差了 14 或 13 小时的排错经历...
CST 时区 名为 CST 的时区是一个很混乱的时区,有四种含义: 美国中部时间 Central Standard Time (USA) UTC-06:00 澳大利亚中部时间 Central Stan ...
- mysql修改时区方法小结
这篇文章主要介绍了MySQL修改时区的方法,总结分析了三种常见的MySQL时区修改技巧,包括命令行模式.配置文件方式及代码方式,需要的朋友可以参考下 方法一:通过mysql命令行模式下动态修改 1.1 ...
- mysql的时区设置
mysql的时区设置 IDEA配置mysql数据库时,地址,用户名,密码,数据库名填写之后,点测试连接,提示 Server returns invalid timezone. Go to 'Advan ...
最新文章
- java fx alert_javaFx:使用弹出对话框 Alert
- tomcat启动一直报空指针错误
- FisherFace 进行人脸分裂
- RabbitMQ和kafka从几个角度简单的对比--转
- VS远程开发(远程调试)编译报错:对‘xxx’未定义的引用(设置库依赖顺序)(已解决)pthread(项目-->属性-->链接器-->输入-->库依赖项)
- Jmeter连接到Mysql
- 微服务【1.1】Swagger的使用
- JAVA——TextArea和JTextArea添加滚动条(ScrollBars)
- 连接关键词用什么符号
- CV:深入浅出的讲解傅里叶变换(真正的通俗易懂)
- 【Oracle 学习笔记】Day 1 常用函数整理(转换、DeCode),表的外键
- sublime text3占用CPU过高
- 实参和形参的一些问题
- Anaconda 3 详细安装教程
- window下从python开始安装科学计算环境
- 山东大学操作系统课设
- AVOD-代码理解系列(二)
- 用计算机刻录光盘,图文详解怎么用电脑刻录光盘
- Android 蓝牙HOGP协议(基于ble-gatt蓝牙)连接流程分析--framework-jni-btif-bta-btm-hci -- 全网最详细(二)
- VB6.0的MsgBox语句