开发者社区 > 大数据与机器学习 > 实时计算 Flink > 正文

Flink的CURRENT_TIMESTAMP, 如何转成长整形的数据怕?

Flink的CURRENT_TIMESTAMP, 如何转成长整形的数据, 用UNIX_TIMESTAMP 好像是转到秒, 我需要保存到毫秒

展开
收起
三分钟热度的鱼 2023-11-01 09:20:53 170 0
5 条回答
写回答
取消 提交回答
  • Flink SQL 支持将 CURRENT_TIMESTAMP 转换成 UNIX TIMESTAMP 并保留到毫秒级别。为此,您可以使用 TO_UNIXTIMESTAMP(CURRENT_TIMESTAMP, 'yyyy-MM-dd HH:mm:ss.SSS') 函数,将其转换为一个长整型数值表示的 UNIX TIMESTAMP 。此方法将当前时间戳转换为毫秒级别的 UNIX TIMESTAMP。
    以下是示例:

    SELECT TO_UNIXTIMESTAMP(CURRENT_TIMESTAMP, 'yyyy-MM-dd HH:mm:ss.SSS') AS current_timestamp_in_millis;
    

    此表达式将返回当前时间戳(包括秒和毫秒)。请注意,您需要根据您的日期和时间格式自行调整时间格式字符串。

    2023-11-01 22:02:39
    赞同 展开评论 打赏
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    您好!您可以使用 Flink 的 CURRENT_TIMESTAMP() 函数将当前时间转换为毫秒级别的 UNIX 时间戳,然后再进行转换。示例代码如下:

    SELECT FLOOR(CURRENT_TIMESTAMP() / (1000L * 1000L)) AS myTimestamp;
    

    注意,在 Flink 中,每个时间节点会被转换为 UNIX 时间戳,单位是毫秒,因此您不必再对其进行额外转换。

    2023-11-01 13:47:24
    赞同 展开评论 打赏
  • 在Flink中,如果你想将CURRENT_TIMESTAMP转换为长整型的数据(即毫秒数),你可以使用以下的方法:

    long milliseconds = System.currentTimeMillis();
    

    System.currentTimeMillis()方法返回的是当前的毫秒数,也就是从1970年1月1日00:00:00 UTC开始的毫秒数。这是Java的标准库提供的函数,不需要使用任何额外的包或库。

    注意,这个方法返回的是当前时间的毫秒数,而不是CURRENT_TIMESTAMP的毫秒数。如果你需要将CURRENT_TIMESTAMP转换为毫秒数,你需要先将其转换为java.sql.Timestamp对象,然后使用getTime()方法获取其毫秒数。以下是一个示例:

    Timestamp currentTimestamp = new Timestamp(System.currentTimeMillis());
    long milliseconds = currentTimestamp.getTime();
    

    在这个示例中,我们首先使用System.currentTimeMillis()获取当前的毫秒数,然后将其转换为Timestamp对象。接着,我们使用getTime()方法获取Timestamp对象的毫秒数。

    2023-11-01 11:56:01
    赞同 展开评论 打赏
  • 可以在Flink SQL查询语句中使用 from_unixtime(CURRENT_TIMESTAMP,'yyyy-MM-dd HH:mm:ss.SSS')from_unixtime(UNIX_TIMESTAMP(), 'yyyy-MM-dd HH:mm:ss.SSS') 将 CURRENT_TIMESTAMP 转换为字符串形式。还可以使用内置函数 to_unix_timestamp()from_unixtime() 将 UNIX 时间戳转换为日期时间格式以及反之。
    例如:

    SELECT to_unix_timestamp(from_unixtime(CURRENT_TIMESTAMP, 'yyyy-MM-dd HH:mm:ss.SSS')) AS timestamp_millis;
    

    将返回一个长整型的时间戳(单位为毫秒)。同时要注意 Flink SQL 语言版本和 SQL 标准兼容性等问题。

    2023-11-01 10:09:55
    赞同 展开评论 打赏
  • cast (substring (cast (CURRENT_TIMESTAMP as varchar), - 3, 3) as bigint) + unix_timestamp (CURRENT_TIMESTAMP) * 1000 此回答整理自钉群“实时计算Flink产品交流群”

    2023-11-01 10:05:19
    赞同 展开评论 打赏

实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。

相关产品

  • 实时计算 Flink版
  • 相关电子书

    更多
    Flink CDC Meetup PPT - 龚中强 立即下载
    Flink CDC Meetup PPT - 王赫 立即下载
    Flink CDC Meetup PPT - 覃立辉 立即下载