临时设置数据库时区
# 设置全局时区 mysql> set global time_zone = '+8:00';
Query OK, 0 rows affected (0.00 sec)
# 设置时区为东八区 mysql> set time_zone = '+8:00';
Query OK, 0 rows affected (0.00 sec)
# 刷新权限使设置立即生效 mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql> show variables like '%time_zone%';
+------------------+--------+
| Variable_name | Value |
+------------------+--------+
| system_time_zone | EST |
| time_zone | +08:00 |
+------------------+--------+
2 rows in set (0.00 sec)
修改my.cnf (永久修改)
vim /etc/my.cnf
然后在mysqld下边的配置中添加一行:
default-time_zone = '+8:00'
然后重启mysql
service mysqld restart
mysql> select now();
+---------------------+
| now() |
+---------------------+
| 2020-01-08 10:24:39 |
+---------------------+
1 row in set (0.00 sec)
执行select now(); 后时间与本地系统时间一致,但java代码新增数据时间依然差8小时。下面修改tomcat时区即可解决问题(我的为日本时区,因为是日本的项目,国内改成 Asia/Shanghai)
JAVA_OPTS="$JAVA_OPTS $JSSE_OPTS -Duser.timezone=Asia/Tokyo"