网站首页 > 文章中心 > 其它

mysql里面怎么改时区

作者:小编 更新时间:2023-10-05 10:38:04 浏览量:310人看过

docker中MySQL的时区修改

docker中的mysql时区是使用了世界标准时间(UTC),把时区改成东八区方法:

①.、启动容器时设置: 添加如下配置:

mysql修改和查看时区(十五)

① 查看时区命令

mysql workbench中怎么修改时区

使用mysql连接工具或者命令好工具都可以.我用workbench输入命令行:

select now(); 查看mysql系统时间.和当前时间做对比

mysql里面怎么改时区-图1

flush privileges; 刷新权限

然后退出后重新登录就可以了,显示当前时间和我现在的时间一致了.

mysql docker 怎么修改时区

①.、查看当前时区

date -R

/usr/share/zoneinfo/Asia# cp Hong_Kong /etc/localtime

我们需要的时区文件在目录 /usr/share/zoneinfo/Asia 下.文件名字是 Hong_Kong.把它拷贝覆盖 /etc/localtime 文件.

mysql数据库时间怎么修改成东京时间

那我们怎么修改,有两种方法,一种是临时的,一种是长久的.

一:通过sql命令临时修改

Query OK, 0 rows affected (0.00 sec)

# 刷新权限使设置立即生效 mysql flush privileges;

mysql show variables like '%time_zone%';

+------------------+--------+

| Variable_name | Value |

| system_time_zone | EST |

二:修改my.cnf实现永久修改

vi /etc/mysql/my.cnf

然后在mysqld下边的配置中添加一行:

然后重启mysql

service mysql restart

技术分享 | MySQL:一文弄懂时区&time_zone

你还在被以下问题困扰吗:

MySQL 的安装规范中应该设置什么时区?

已经运行一段时间的业务,修改 MySQL 的时区会影响已经存储的时间类型数据吗?

迁移数据时会有导致时间类型数据时区错误的可能吗?

...

看完这篇文章,你能解决上面所有的疑惑.首先出场的是和时区相关的启动参数和系统变量.

如果要在 MySQL 启动时就指定时区,则应该使用启动参数: default-time-zone ,示例:

启动后我们可以看到控制时区的系统变量,其中 time_zone 变量控制时区,在MySQL运行时可以通过 set 命令修改(注意:不可以写在 my.cnf 中):

启动参数和系统变量的可用值遵循相同的格式:

system_time_zone 变量只有全局值没有会话值,不能动态修改,MySQL 启动时,将尝试自动确定服务器的时区,并使用它来设置 system_time_zone 系统变量, 此后该值不变.当 time_zone='system' 时,就是使用的这个时区,示例中 time_zone 就是 CST,而 CST 在 RedHat 上就是东八区:

概括一下就两点:

① NOW() 和 CURTIME() 系统函数的返回值受当前 session 的时区影响

不仅是select now(),包括insert .. values(now())、以及字段的 DEFAULT CURRENT_TIMESTAMP 属性也受此影响:

timestamp 数据类型会存储当时session的时区信息,读取时会根据当前 session 的时区进行转换;而 datetime 数据类型插入的是什么值,再读取就是什么值,不受时区影响.也可以理解为已经存储的数据是不会变的,只是 timestamp 类型数据在读取时会根据时区转换:

关于时区所有明面上的东西都在上面了,我们前面提到的困扰就是在暗处的经验.

① MySQL的安装规范中应该设置什么时区?

为什么不设置为 system 呢?使用系统时间看起来也是个不错的选择,比较省事.不建议的原因有两点:

完全不会,只会影响对 timestamp 数据类型的读取.这里不得不提一句,为啥要用 timestamp?用 datetime 不香吗,范围更大,存储空间其实差别很小,赶紧加到开发规范中吧.

这个还真有,还是针对 timestamp 数据类型,比如使用 mysqldump 导出 csv 格式的数据,默认这种导出方式会使用 UTC 时区读取 timestamp 类型数据,这意味导入时必须手工设置 session.time_zone='+00:00'才能保证时间准确:

如何避免?mysqldump 也提供了一个参数 --skip-tz-utc ,意思就是导出数据的那个连接不设置 UTC 时区,使用 MySQL 的 gloobal time_zone 系统变量值.

其实 mysqldump 导出 sql 文件时默认也是使用 UTC 时区,并且会在导出的 sql 文件头部带有 session time_zone 信息,这样可以保证导 SQL 文件导入和导出时使用相同的时区,从而保证数据的时区正确(而导出的 csv 文件显然不可以携带此信息).需要注意的是 --compact 参数会去掉 sql 文件的所有头信息,所以一定要记得: --compact 参数得和 --skip-tz-utc 一起使用.

以上就是土嘎嘎小编为大家整理的mysql里面怎么改时区相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!

版权声明:倡导尊重与保护知识产权。未经许可,任何人不得复制、转载、或以其他方式使用本站《原创》内容,违者将追究其法律责任。本站文章内容,部分图片来源于网络,如有侵权,请联系我们修改或者删除处理。

编辑推荐

热门文章