You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解析MySQL5.5 Binlog中datetime(3)类型的字节数组为Timestamp

MySQL 5.5 Binlog中datetime(3)字节数组解析为Timestamp的方法

MySQL 5.5 Binlog里的datetime(3)类型以8字节大端序字节数组存储,解析成带毫秒精度的Timestamp的具体步骤如下:

  • 拆分字节数组:将8字节分为前4字节(秒数部分)和后4字节(微秒/毫秒部分)
  • 解析秒数部分:
    1. 把前4字节按大端序转换为无符号整数,该值代表从0000-00-00 00:00:00到目标时间的总秒数
    2. 转换为Unix时间戳基准(1970-01-01 00:00:00 UTC)的秒数:用上述整数减去62135596800(这是0000年到1970年的总秒数)
  • 解析毫秒部分:
    1. 把后4字节按大端序转换为无符号整数,该值是微秒数(datetime(3)精度下,值为0、1000、2000...999000,对应0-999毫秒)
    2. 将微秒数除以1000,得到毫秒数
  • 组合为Timestamp:
    • 若需Unix毫秒时间戳:(unix_seconds * 1000) + milliseconds
    • 若需带微秒的Timestamp(如Java的java.sql.Timestamp):直接用unix_seconds作为秒数,加上microseconds_part作为微秒数

注意事项

  • 字节序必须是大端序(Binlog中整数默认以大端存储)
  • MySQL的datetime类型不含时区信息,解析时需明确目标时区(如UTC或本地时区),若要转换为本地时间,需在Unix时间戳基础上做时区偏移调整

内容的提问来源于stack exchange,提问作者gee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 06:52:44