如何修改mysql 时区 为system

如何修改mysql 时区 为system,第1张

1。在mysql的命令模式下使用

mysql

>

select

CURTIME()

mysql

>

select

now()

看当前时间是否正确,可以看到mysql当前使用的是那一个时区的时间。

2。在mysql命令行中更改时区

mysql

>

SET

time_zone

=

'+8:00'

#

此为北京时,我们所在东8区

mysql>

flush

privileges

#

立即生效

此时mysql时区已更改正确,与系统时区都使用为

Shanghai时间了。

####

这种方法好像只能在终端上使用,退出终端后时间又会变成原来的,看来只能重启mysql了。

3。重启mysql也应没有问题,此时mysql会主动读取系统时间。

方法二:

如果mysql数据库可以重启,直接重启,mysql应可以立即主动读取系统时间,如果不行则更改mysql的配置文件(mysql.cnf)

在my.cnf的

[mysqld]区域中加上

default-time_zone

=

'+8:00'

#此为北京时。

补充:

如果想临时解决时间显示问题,可以用php或其他语言动态修改下mysql的时区。

具体方法:

在mysql_connect()下使用mysql_query("SET

time_zone

=

'+8:00'")。

这样可以在保证你不重启的情况下改变时区。但是mysql的某些系统函数还是不能用如:now()。

docker中的mysql时区是使用了世界标准时间(UTC),把时区改成东八区方法: 1、启动容器时设置: 添加如下配置: 2、进入docker配置:(重启才能生效--永久生效) 3、临时修改(从mysql上修改,重启失效)

可以了解一下MySQL的时间戳(Timestamp)数据类型:

默认时间戳(Timestamp)类型的取值范围为'1970-01-01 00:00:01' UTC至'2038-01-19 03:14:07' UTC,数据精确到秒级别,该取值范围包含约22亿个数值,因此在MySQL内部使用4个字节INT类型来存放时间戳数据:

1、在存储时间戳数据时,先将本地时区时间转换为UTC时区时间,再将UTC时区时间转换为INT格式的毫秒值(使用UNIX_TIMESTAMP函数),然后存放到数据库中。

2、在读取时间戳数据时,先将INT格式的毫秒值转换为UTC时区时间(使用FROM_UNIXTIME函数),然后再转换为本地时区时间,最后返回给客户端。

(Timestamp)时间戳列可以有四张组合定义,其含义分别为:

1、当字段定义为timestamp,表示该字段在插入和更新时都不会自动设置为当前时间。

2、当字段定义为timestamp DEFAULT CURRENT_TIMESTAMP,表示该字段仅在插入且未指定值时被赋予当前时间,再更新时且未指定值时不做修改。

3、当字段定义为timestamp ON UPDATE CURRENT_TIMESTAMP,表示该字段在插入且未指定值时被赋值为"0000-00-00 00:00:00",在更新且未指定值时更新为当前时间。

4、当字段定义为timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,表示该字段在插入或更新时未指定值,则被赋值为当前时间。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/7465520.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-06
下一篇 2023-04-06

发表评论

登录后才能评论

评论列表(0条)

保存