我必须将时间戳列转换为 bigint 以映射 flinksql 中的目标列,并且不想为其编写自定义 UDF。 有什么建议吗??
列定义为
max_updated as TIMESTAMP(3) -- no LTZ
并且该值显示为
"max_updated": {
"long": "2024-11-04T22:04:17.793"
}
在FlinkSQL中,您可以通过直接使用SQL函数提取纪元毫秒来将时间戳转换为bigint。尝试
CAST (FLOOR(YOUR_TIMESTAMP_COLUMN TO SECOND) AS BIGINT) * 1000
。这将为您提供以毫秒为单位的时间戳。
最后 UNIX_TIMESTAMP 起作用了,我的时间戳类型列(3)可以转换为字符串
select myts_col,UNIX_TIMESTAMP(CAST(myts_col AS STRING)), CAST(myts_col AS STRING),DATE_FORMAT(myts_col,'yyyy-MM-dd HH:mm:ss') from mytable
mycol_ts conv_col
2024-11-06 06:34:53.316 1730874893