MySQL时区查看及设置全过程

 更新时间:2025年01月22日 16:55:23   作者:AGLJC  
在服务器环境下,MySQL默认时区可能是UTC,需注意应用时区设置,若查询条件使用Now()/sysdate(),会根据MySQL时区查询,导致时间错乱,可使用`selectnow()`检查时间准确性,查看和修改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# 

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Win10安装MySQL5.7.18winX64 启动服务器失败并且没有错误提示

    Win10安装MySQL5.7.18winX64 启动服务器失败并且没有错误提示

    这篇文章主要介绍了Win10安装MySQL5.7.18winX64 启动服务器失败并且没有错误提示,需要的朋友可以参考下
    2017-06-06
  • mysql数据库备份设置延时备份方法(mysql主从配置)

    mysql数据库备份设置延时备份方法(mysql主从配置)

    这篇文章主要介绍了mysql数据库延时备份的方法,也就是mysql主从服务器备份,可以同步到多个服务器,最后我们提供了一个备份脚本,大家参考使用吧
    2013-12-12
  • Mysql中报错函数floor()函数和rand()函数的配合使用及原理详解

    Mysql中报错函数floor()函数和rand()函数的配合使用及原理详解

    在项目中的SQL语句中遇到几个数值处理函数,看着有些懵,就小小的总结一下,这篇文章主要给大家介绍了关于Mysql中报错函数floor()函数和rand()函数的配合使用及原理的相关资料,需要的朋友可以参考下
    2022-07-07
  • MySQL中DATE_FORMAT时间函数的使用小结

    MySQL中DATE_FORMAT时间函数的使用小结

    本文主要介绍了MySQL中DATE_FORMAT时间函数的使用小结,用于格式化日期/时间字段,可提取年月、统计月份数据、精确到天,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-08-08
  • 老鸟带你开发专业规范的MySQL启动脚本

    老鸟带你开发专业规范的MySQL启动脚本

    这篇文章主要介绍了老鸟带你开发专业规范的MySQL启动脚本,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09
  • MySQL的常见存储引擎介绍与参数设置调优

    MySQL的常见存储引擎介绍与参数设置调优

    这篇文章主要介绍了MySQL的常见存储引擎介绍与参数设置调优,需要的朋友可以参考下
    2018-03-03
  • mysql 超大数据/表管理技巧

    mysql 超大数据/表管理技巧

    在实际应用中经过存储、优化可以做到在超过9千万数据中的查询响应速度控制在1到20毫秒。看上去是个不错的成绩,不过优化这条路没有终点,当我们的系统有超过几百人、上千人同时使用时,仍然会显的力不从心
    2013-03-03
  • 在MySQL中如何存取List<String>数据

    在MySQL中如何存取List<String>数据

    这篇文章主要介绍了在MySQL中如何存取List<String>数据问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-07-07
  • MySQL的一条慢SQL查询导致整个网站宕机的解决方法

    MySQL的一条慢SQL查询导致整个网站宕机的解决方法

    通常来说,我们看到的慢查询一般还不致于导致挂站,顶多就是应用响应变慢不过这个恰好今天被我撞见了,一个慢查询把整个网站搞挂了
    2016-07-07
  • mysql8重置root用户密码的完整步骤

    mysql8重置root用户密码的完整步骤

    这篇文章主要给大家分享介绍了关于mysql8重置root用户密码的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-12-12

最新评论