IT评测·应用市场-qidao123.com

标题: MySQL时区查看及设置 [打印本页]

作者: 笑看天下无敌手    时间: 2024-10-10 05:37
标题: MySQL时区查看及设置
在服务器环境下(linux 或 docker),有时体系时区默认是 UTC 时区,这时需要格外注意下应用利用的时区信息。若查询条件中含有 Now()/sysdate(),则会按 mysql 的时区信息查询,造成时间错乱。可以利用 select now(); 来检查 mysql 的当前时间是否准确。
  1. 查看数据库获取的当前时间语句:
  2. select SYSDATE();
  3. select now();
复制代码

  1. show variables like '%time_zone%';
复制代码

看到MySQL 服务器利用操作体系的时区设置,体系利用了CST时区 
Time zone: Asia/Shanghai (CST, +0800):
中国尺度时间:China Standard Time UT+8:00
  1. [root@hcss-ecs-3983 ~]# timedatectl
  2.       Local time: Sun 2024-07-28 14:43:17 CST
  3.   Universal time: Sun 2024-07-28 06:43:17 UTC
  4.         RTC time: Sun 2024-07-28 06:43:15
  5.        Time zone: Asia/Shanghai (CST, +0800)
  6.      NTP enabled: yes
  7. NTP synchronized: yes
  8. RTC in local TZ: no
  9.       DST active: n/a
  10. [root@hcss-ecs-3983 ~]# date
  11. Sun Jul 28 14:46:38 CST 2024
复制代码
Java程序MySQL链接url配置

  1. url: jdbc:mysql://127.0.0.1:3306/mydata?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
复制代码
修改MySQL的时区

可以利用以下命令修改数据库的时区
  1. SET GLOBAL time_zone = 'Asia/Shanghai';
  2. SET time_zone = 'Asia/Shanghai';
复制代码
也可以修改my.cnf配置文件修改,添加一行,重启MySQL服务见效
  1. default-time-zone=Asia/Shanghai
复制代码
 docker容器利用宿主机时区

  1. 命令格式:
  2. docker exec your_container_name ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo "Asia/Shanghai" > /etc/timezone
  3. 通过容器名去修改,示例如下:
  4. [root@hcss-ecs-3983 ~]# history | grep timezone
  5. 1299  2024-07-14 13:43:34 root docker exec mysql ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo "Asia/Shanghai" > /etc/timezone
  6. 2159  2024-07-28 15:00:25 root history | grep timezone
  7. [root@hcss-ecs-3983 ~]# docker ps
  8. CONTAINER ID   IMAGE          COMMAND                  CREATED       STATUS       PORTS                                                  NAMES
  9. 577359655a60   redis:6.0.6    "docker-entrypoint.s…"   5 weeks ago   Up 2 weeks   0.0.0.0:6379->6379/tcp, :::6379->6379/tcp              myredis
  10. 920994cf01b0   mysql:8.0.30   "docker-entrypoint.s…"   7 weeks ago   Up 3 days    0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp   mysql
  11. 修改后,容器的时间:
  12. bash-4.4# date
  13. Sun Jul 28 15:01:50 CST 2024
  14. bash-4.4#
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 IT评测·应用市场-qidao123.com (https://dis.qidao123.com/) Powered by Discuz! X3.4