FlinkSQL timestamp数据类型转化

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

FlinkSQL timestamp数据类型转化

nobleyd
时间戳(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无法考虑时区。


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