MySQL时区查看及设置

  • 说明

在服务器环境下(linux 或 docker),有时系统时区默认是 UTC 时区,这时需要格外注意下应用使用的时区信息。若查询条件中含有 Now()/sysdate(),则会按 mysql 的时区信息查询,造成时间错乱。可以使用 select now(); 来检查 mysql 的当前时间是否准确。

查看数据库获取的当前时间语句:
select SYSDATE();
select now();
  • 查看时区

show variables like '%time_zone%';

看到MySQL 服务器使用操作系统的时区设置,系统使用了CST时区 

Time zone: Asia/Shanghai (CST, +0800):

中国标准时间:China Standard Time UT+8:00

[root@hcss-ecs-3983 ~]# timedatectl
      Local time: Sun 2024-07-28 14:43:17 CST
  Universal time: Sun 2024-07-28 06:43:17 UTC
        RTC time: Sun 2024-07-28 06:43:15
       Time zone: Asia/Shanghai (CST, +0800)
     NTP enabled: yes
NTP synchronized: yes
 RTC in local TZ: no
      DST active: n/a
[root@hcss-ecs-3983 ~]# date
Sun Jul 28 14:46:38 CST 2024

Java程序MySQL链接url配置

url: jdbc:mysql://127.0.0.1:3306/mydata?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai

修改MySQL的时区

可以使用以下命令修改数据库的时区

SET GLOBAL time_zone = 'Asia/Shanghai';
SET time_zone = 'Asia/Shanghai';

也可以修改my.cnf配置文件修改,添加一行,重启MySQL服务生效

default-time-zone=Asia/Shanghai

 docker容器使用宿主机时区

命令格式:
docker exec your_container_name ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo "Asia/Shanghai" > /etc/timezone

通过容器名去修改,示例如下:
[root@hcss-ecs-3983 ~]# history | grep timezone
 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
 2159  2024-07-28 15:00:25 root history | grep timezone
[root@hcss-ecs-3983 ~]# docker ps
CONTAINER ID   IMAGE          COMMAND                  CREATED       STATUS       PORTS                                                  NAMES
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
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

修改后,容器的时间:
bash-4.4# date
Sun Jul 28 15:01:50 CST 2024
bash-4.4# 

  • 8
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值