FlinkSQL 将没有时区的 TIMESTAMP(3) 列转换为 BIGINT

问题描述 投票:0回答:2

我必须将时间戳列转换为 bigint 以映射 flinksql 中的目标列,并且不想为其编写自定义 UDF。 有什么建议吗??

列定义为

max_updated as TIMESTAMP(3) -- no LTZ

并且该值显示为

"max_updated": {
    "long": "2024-11-04T22:04:17.793"
}
apache-flink flink-sql
2个回答
0
投票

在FlinkSQL中,您可以通过直接使用SQL函数提取纪元毫秒来将时间戳转换为bigint。尝试

CAST (FLOOR(YOUR_TIMESTAMP_COLUMN TO SECOND) AS BIGINT) * 1000
。这将为您提供以毫秒为单位的时间戳。


0
投票

最后 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
© www.soinside.com 2019 - 2024. All rights reserved.