我在使用flink cdc 2.2.0获取mysql数据变更, mysqlSource设置了 .serverTimeZone("Asia/Shanghai") 发现mysql timestamp 类型的数据在mysql workbench里显示的是 "2021-06-24 16:26:47",通过JsonDebeziumDeserializationSchema解析后得到的json string串是 "2021-06-24T08:26:47Z"。继而在通过org.apache.flink.formats.json.JsonToRowDataConverters转成RowData时解析timestamp失败 (private TimestampData convertToTimestamp(JsonNode jsonNode)方法),因为当前只支持SQL和ISO_8601两种TimestampFormat,我看到 org.apache.flink.formats.common.TimeFormats 类中除了支持这两种timestamp外,还支持 RFC3339_TIMESTAMP_FORMAT。
问题: 1. 为什么RFC3339没有出现在 org.apache.flink.formats.common.TimestampFormat中呢?我在debug窗口试了用RFC3339_TIMESTAMP_FORMAT.parse(jsonNode.asText())是可以出结果的。 2. 开头设置的时区 "Asia/Shanghai" 为什么没有生效?实际返回的时间表示还是UTC时区的 附mysql服务器时区设置如下 mysql> show variables like'%time_zone'; +------------------+--------+ | Variable_name | Value | +------------------+--------+ | system_time_zone | CST | | time_zone | SYSTEM | +------------------+--------+