Flink建表使用TIMESTAMP WITH TIME ZONE类型报错求助
解决Flink SQL带时区偏移时间戳的建表报错问题
问题根源
你碰到的ParserException是因为Flink SQL解析器在部分版本中不支持直接使用标准SQL的TIMESTAMP WITH TIME ZONE语法,它更识别缩写的类型标识。
正确建表方案
要存储带时区偏移的时间戳,直接用Flink SQL支持的TIMESTAMP_TZ类型(可指定精度,默认3位毫秒精度),示例DDL:
CREATE TABLE time_zone_table ( id INT, tz_timestamp TIMESTAMP_TZ(3), -- 带时区偏移的时间戳字段 content STRING ) WITH ( 'connector' = 'filesystem', 'path' = '/path/to/data', 'format' = 'json' );
额外说明
TIMESTAMP_TZ会同时存储UTC时间值和对应的时区偏移,完全不需要写UDF来处理时区问题。- 如果你一定要用标准SQL的
TIMESTAMP WITH TIME ZONE语法,确保你的Flink版本在1.16及以上,这个版本开始完善了对标准SQL时区类型的语法支持。 - 当用JSON格式读写数据时,时间戳要符合ISO-8601格式(比如
2024-05-20T14:20:00+00:00),Flink能自动解析并保留偏移信息。
内容的提问来源于stack exchange,提问作者Nfuture
相关产品推荐
相关产品推荐

