桃园结义 , 版权所有丨如未注明 , 均为原创丨转载请注明

java与mysql时区问题

桃园小编 126次浏览 0个评论 扫描二维码

MySQL 时区默认是服务器的时区。默认情况下mysqltime_zoneSYSTEM,也就是mysql的时区和服务器的时区是一样的。一般服务器都是东八区。在使用mysql时,客户端所在的时区一般也是东八区。所以从mysql查询timestamp类型数据时一切正常。

bash >># docker exec -it mysql bash;

bash >># mysql -usenseguard -p
Enter password: 

1.查询系统版本:
mysql> select version();
+-----------+
| version() |
+-----------+
| 8.0.16    |
+-----------+
1 row in set (0.00 sec)

2.显示系统当前时区:
mysql> show variables like '%time_zone%';
+------------------+--------+
| Variable_name    | Value  |
+------------------+--------+
| system_time_zone | UTC    |
| time_zone        | +08:00 |
+------------------+--------+
2 rows in set (0.00 sec)

3.修改mysql时区设置:
   方法1:修改my.cnf 在[mysqld] 之下加 default-time-zone=timezone
 比如 default-time-zone = ‘+8:00’,需要重启mysql。
   方法2:控制台直接编辑。
mysql> set time_zone='+8:00';
Query OK, 0 rows affected (0.00 sec)

4.通过 now()查询当前时间:
mysql> select now();
+---------------------+
| now()               |
+---------------------+
| 2019-09-10 16:03:58 |
+---------------------+
1 row in set (0.00 sec)

5.java程序application.yml文件链接数据库修改:

    jdbc:mysql://localhost:3306/database?useUnicode=true&characterEncoding=UTF-8&useOldAliasMetadataBehavior=true&autoReconnect=true&serverTimezone=UTC 


如果使用CST时区【cst是“中国标准时间+8:00区”】,一般不需要更改。

百度已收录

桃园结义 , 版权所有丨如未注明 , 均为原创丨转载请注明java与mysql时区问题

您必须 登录 才能发表评论!