时区信息记录表|全方位认识 mysql 系统库

本文详细介绍了MySQL系统库中的时区信息记录表,包括系统时区、Server当前时区的概念,以及如何设置和管理时区。同时,讲解了time_zone、time_zone_leap_second、time_zone_name、time_zone_transition和time_zone_transition_type等时区相关表的结构和作用,帮助读者深入理解MySQL的时区支持。
摘要由CSDN通过智能技术生成

在上一期《优化器成本记录表|全方位认识 mysql 系统库》中,我们详细介绍了mysql 系统库中的优化器成本记录表,本期我们将为大家带来系列第六篇《时区信息记录表|全方位认识 mysql 系统库》,下面请跟随我们一起开始 mysql 系统库的系统学习之旅吧!

01 时区信息概述

MySQL服务器维护几个时区设置:

  • 系统时区:当Server启动时,尝试确定主机的时区并使用它来设置Server的system_time_zone系统变量值。该变量为只读变量,此外,您还可以在Server启动时使用--timezone = timezone_name选项为mysqld_safe设置MySQL服务器的系统时区。或者在Server启动之前设置 TZ系统环境变量为timezone_name值。

  • Server的当前时区。全局系统变量time_zone的值表示当前正在运行的Server时区,该系统变量的初始值为'SYSTEM',表示Server时区与系统时区相同。

    * 如果系统变量time_zone设置为SYSTEM,则每个有时区计算需要的MySQL函数在调用时,都会调用系统库来确定当前的系统时区。因此,此系统调用可能会受全局互斥保护,从而导致争用发生。

    * Server的全局当前时区可以在启动时使用--default-time-zone = timezone启动选项明确指定,也可以在my.cnf中使用default-time-zone='timezone' 指定,如果您具有SUPER权限,则可以使用语句SET GLOBAL time_zone = timezone; 在Server运行时设置全局Server时区值。

    * time_zone是全局,会话变量,可以在会话级别为每个会话单独设置自己的时区(连接时区),每个会话的time_zone值默认会继承time_zone系统变量的全局值,但每个会话可以使用SET time_zone = timezone;语句进行 修改。要注意:当前会话的时区设置会影响对时区敏感的时间值的显示和存储。例如:NOW()或CURTIME()等函数显示的值是使用会话时区值、TIMESTAMP数据类型列中存储和检索的值使用的是会话时区值-- TIMESTAMP列的值会从当前时区转换为UTC存储,查询时从UTC转换为当前时区。但当前时区设置不影响诸如UTC_TIMESTAMP()函数或DATE、TIME或DATETIME数据类型列中值的显示和存储--这些数据类型中的值不以UTC存储;如果有需要针对DATE、TIME或DATETIME显示时区影响,可以将它们的值转换为UTC,然后执行算术运算,然后再转换回去。

    * time_zone系统变量可以设置为SYSTEM,表示与系统时区相同,也可以设置具体的时区,例如:'+10:00'或'-6:00' 表示在UTC时区的基础上,+ 10个时区或 -6个时区(与UTC时区的偏移量),实际上相当于东十区和西六区。还可以设置为具体的时区名称,例如: 'Europe/Helsinki'

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值