Flink的CURRENT_TIMESTAMP, 如何转成长整形的数据, 用UNIX_TIMESTAMP 好像是转到秒, 我需要保存到毫秒
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;
此表达式将返回当前时间戳(包括秒和毫秒)。请注意,您需要根据您的日期和时间格式自行调整时间格式字符串。
您好!您可以使用 Flink 的 CURRENT_TIMESTAMP() 函数将当前时间转换为毫秒级别的 UNIX 时间戳,然后再进行转换。示例代码如下:
SELECT FLOOR(CURRENT_TIMESTAMP() / (1000L * 1000L)) AS myTimestamp;
注意,在 Flink 中,每个时间节点会被转换为 UNIX 时间戳,单位是毫秒,因此您不必再对其进行额外转换。
在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对象的毫秒数。
可以在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 标准兼容性等问题。
cast (substring (cast (CURRENT_TIMESTAMP as varchar), - 3, 3) as bigint) + unix_timestamp (CURRENT_TIMESTAMP) * 1000 此回答整理自钉群“实时计算Flink产品交流群”
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。