开发者社区> 问答> 正文

MySQL数据库时间类型按照时区转换问题

从mysql读取的timestamp类型转换的时候写入redis发现自动加了8个小时,各种配置文件找没有找到哪里可以设置时区。操作系统date -R 显示Wed, 30 Oct 2019 16:35:10 +0800正常的+8时区,好像也不是读取操作系统的时区。

原提问者GitHub用户qxxg

展开
收起
Java工程师 2023-05-03 16:02:36 97 0
2 条回答
写回答
取消 提交回答
  • 随心分享,欢迎友善交流讨论:)

    您可以在 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 读取的时间戳进行比较,从而确定是否需要进行时区转换。

    2023-05-05 14:05:09
    赞同 展开评论 打赏
  • 这个应该是数据库时区设置错误了导致的。可以排查下是否是数据库时区

    原回答者GitHub用户studyhuang1996

    2023-05-04 17:07:59
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
2022 DTCC-阿里云一站式数据库上云最佳实践 立即下载
云时代的数据库技术趋势 立即下载
超大型金融机构国产数据库全面迁移成功实践 立即下载

相关镜像