mysql数据库修改全局为中国时区时间

今天写代码的时候发现,代码放在国外一个主机上,
select * from checkins where TO_DAYS(create_time) = TO_DAYS(NOW()) and user_id=1
查询当前时间返回的结果是昨天(8号),如下图

mysql数据库修改全局为中国时区时间-第1张-讯沃blog(讯沃blog)

于是查询了服务器时区+8:00没错。加了date_default_timezone_set(‘Asia/Shanghai’);也无效。
查询资料后发现,是mysql时间时区的问题。使用TO_DAYS(NOW())语句就会出现这个问题。
查询当前时间,和我电脑的时间2021-04-09 11:28:54相差了几个小时。。

select now()

mysql数据库修改全局为中国时区时间-第2张-讯沃blog(讯沃blog)

时区信息

show variables like "%time_zone%";

mysql数据库修改全局为中国时区时间-第3张-讯沃blog(讯沃blog)

当前mysql服务器时区显示为PST(太平洋时间),
修改时区:
##修改mysql全局时区为北京时间,即我们所在的东8区。

set global time_zone = '+8:00';

如果是虚拟主机之类,可能会出现
#1227 – Access denied; you need (at least one of) the SUPER privilege(s) for this operation。权限不够,没办法设置,那就在mysql语句前面加上以下语句,如下图:
##修改当前会话时区

set time_zone = '+8:00';

#立即生效

flush privileges;

mysql数据库修改全局为中国时区时间-第4张-讯沃blog(讯沃blog)

© 版权声明
THE END
喜欢就支持一下吧
点赞0赞赏
分享
评论 抢沙发

请登录后发表评论