Flink SQL:将 Bigint 转换为 Timesamp



这个问题很简单,但我在互联网上找不到任何答案。

我有一个看起来像这样的 Flink SQL 查询:

SELECT 
  HOP_START(timestampMs, INTERVAL '5' SECOND, INTERVAL '10' SECOND) as wStart, SUM(`value`) - MINVALUE(`value`), ID
FROM MySource 
GROUP BY HOP(timestampMs, INTERVAL '5' SECOND, INTERVAL '10' SECOND), ID

问题是我的字段时间戳Ms被视为BIGINT而不是TIMESTAMP,并且我在HOP函数上出错。如何将其转换为TIMESTAMP类型?

不幸的是,没有内置支持从大纪元米利斯转换为java.sql.Timestamp。您可以使用 UDF 来实现:

class UnixEpochToTimestamp extends ScalarFunction {
  def eval(epochMillis: Long): Timestamp = {
    new Timestamp(epochMillis)
  }
}

相关内容

  • 没有找到相关文章

最新更新