doirs 版本2.1.7
从postgres 中同步数据,主键为id,create_time ,postgres中数据如下:
,
同步到doris 中数据如下(数据重复了):
doris 建表语句如下(省略部分无关字段):
从初步测试来看使用if 判断两条数据的create_time 是否相当,结论是不相等,目前猜测虽然doris 显示时间一致,可能时间存储的包含了毫秒部分。烦请大佬关注。
补充下重现步骤
主键为id bigint ,create_time datetime ,postgres 是 timestamp(6),
通过 flinkcdc 写入到 doris select create_time 为 2025-02-08 08:12:45
将其 cast(create_time as datetime(6)) 为 2025-02-08 08:12:45.000000
通过catalog 外部表写入doris 并转为 datetime(6) 为2025-02-08 08:12:45.075000 与源库一致。
而doris 采用默认 datetime 根据文档默认即为datetime(0)烦请大佬们帮忙看看如何解决。
flinkcdc 写入datetime 时候,自动四舍五入到秒,而catalog 插入时候未四舍五入,其表中实际存储的值通过转datetime(6) 发现其实是存在毫秒微秒的。总结就是,flink 实时写入和catalog外部表写入对时间精度处理逻辑不一致。