今天写代码的时候发现,代码放在国外一个主机上,
select * from checkins where TO_DAYS(create_time) = TO_DAYS(NOW()) and user_id=1
查询当前时间返回的结果是昨天(8号),如下图
于是查询了服务器时区+8:00没错。加了date_default_timezone_set(‘Asia/Shanghai’);也无效。
查询资料后发现,是mysql时间时区的问题。使用TO_DAYS(NOW())语句就会出现这个问题。
查询当前时间,和我电脑的时间2021-04-09 11:28:54相差了几个小时。。
select now()
show variables like "%time_zone%";
当前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;
© 版权声明
THE END
暂无评论内容