今天在项目中遇到java的TimeStamp类型的时间数据插入到mysql的DateTime类型时发现时间刚好差了13个小时。因此上网查了查相关问题的解决,折腾了半天,记录下来解决方案。
不管是差了几个小时,其实就是时区的问题。
可以通过先查询自己本地时区
一般都是东八区没错。
第一种方法(临时解决,不推荐)
这种的方法重启数据会被还原掉,所以不推荐使用.
然后关键就是也将数据库mysql中的时区改为东八区。1.登录mysql mysql -uroot -p 输入密码;2.运行命令show variables like '%time_zone%';
可以看到system_time_zone项是CST。这时候排查mysql问题结束。3.修改一下mysql的时区设置即可
set global time_zone='+8:00';
set time_zone='+8:00';
flush privileges ;
4.然后运行自己的java代码可以解决问题。
第二种方法(永久解决,推荐)
1. 修改my.cnf实现永久修改
my.cnf文件位置不是固定的,在哪里视情况而定.vi /etc/mysql/my.cnf
2. 然后在mysqld下边的配置中添加一行:default-time_zone = '+8:00'
3. 然后重启mysqlservice mysql restart