从mysql读取的timestamp类型转换的时候写入redis发现自动加了8个小时,各种配置文件找没有找到哪里可以设置时区。操作系统date -R 显示Wed, 30 Oct 2019 16:35:10 +0800正常的+8时区,好像也不是读取操作系统的时区。
原提问者GitHub用户qxxg
您可以在 MySQL 配置文件中设置时间区域。在 MySQL 配置文件 /etc/my.cnf 中,可以添加以下行来设置时间区域:
[mysqld]
default-time-zone='+08:00'
这将设置 MySQL 数据库的默认时区为东八区。注意,这只影响新建表的默认时区,对于已经存在的表,需要手动修改表结构来修改时区。
另外,当从 MySQL 中读取时间戳时,可以使用 CONVERT_TZ 函数来将 MySQL 默认时区转换为其他时区,例如:
SELECT CONVERT_TZ(timestamp_column, @@global.time_zone, '+08:00') as local_time FROM table_name; 这将把 timestamp_column 字段从 MySQL 默认时区转换为东八区。
最后,如果您在读取时间戳之后写入 Redis 时,仍然遇到时区问题,可以使用 Redis 的 TIME 命令获取 Redis 服务器的当前时间,将其与 MySQL 读取的时间戳进行比较,从而确定是否需要进行时区转换。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。