You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user-zh@flink.apache.org by 赵一旦 <hi...@gmail.com> on 2020/09/27 08:46:36 UTC

FlinkSQL timestamp数据类型转化

时间戳(long)、TIMESTAMP、STRING 这3如何转化。


目前发现
(1)时间戳 -> STRING 可以用 FROM_UNIXTIME 函数。
(2)STRING -> TIMESTAMP 可以用 TO_TIMESTAMP 函数。
(3)时间 -> TIMESTAMP可以用(1)+(2)实现。
(4)TIMESTAMP -> STRING:这个目前只发现DATE_FORMAT函数可用,但是却标注不安全,可能有问题了。
(5)STRING -> 时间戳:貌似也没有。

当然,时间戳 -> TIMESTAMP 以及 TIMESTAMP -> 时间戳
还可以通过cast直接实现。但是实际使用时候,由于有时区问题,我一般会基于(1)+(2)途径,因为FROM_UNIXTIME函数会考虑时区问题。但是计划sink的时候,timestamp类型的结果想写成时间戳就没有很好的方法了,直接cast无法考虑时区。


额外建议
当前官方文档函数部分,所有函数的参数还好,起码有个名字可以看出是啥类型,此外描述中也有部分类型信息。但部分描述可能不是很清晰,导致部分信息其实是没有的,我主要指返回值。
推荐把返回值类型也明确给出下。