如何在ksqldb中从时间戳提取小时、分钟、秒的整数值
ksqlDB时间分量提取相关问题解答
完全可以实现你要的需求,ksqlDB原生就提供了和MySQL用法高度相似的时间提取函数,不用额外写自定义逻辑。
核心可用函数
直接调用内置的HOUR()、MINUTE()、SECOND()函数即可,传入合法的TIMESTAMP类型值,就会返回对应范围的整数值:
HOUR():返回0-23范围的小时整数MINUTE():返回0-59范围的分钟整数SECOND():返回0-59范围的秒整数
你举的示例在ksqlDB中可以直接写:
SELECT HOUR(TIMESTAMP '2023-01-01 22:59:01') FROM 你的流/表名 EMIT CHANGES LIMIT 1;
执行后返回结果就是整数22,和MySQL的HOUR()函数行为完全一致。
自定义格式时间戳的处理
如果你的时间戳是存储为MM/dd/yyyy hh:mm:ss a格式的字符串,需要先转成TIMESTAMP类型再提取:
用内置的PARSE_TIMESTAMP()函数先做格式转换,示例代码如下:
SELECT HOUR(PARSE_TIMESTAMP('MM/dd/yyyy hh:mm:ss a', '10/15/2023 09:45:30 PM')) AS hour_val, MINUTE(PARSE_TIMESTAMP('MM/dd/yyyy hh:mm:ss a', '10/15/2023 09:45:30 PM')) AS minute_val, SECOND(PARSE_TIMESTAMP('MM/dd/yyyy hh:mm:ss a', '10/15/2023 09:45:30 PM')) AS second_val FROM 你的流/表名 EMIT CHANGES LIMIT 1;
上述语句执行后会分别返回21、45、30三个整数值。
注意事项
- 如果你的时间字段在建流/表的时候已经指定为TIMESTAMP类型,直接套对应的提取函数即可,不需要额外转换
PARSE_TIMESTAMP的第一个格式参数要和你实际的时间字符串格式完全匹配,否则会返回空值或报错
内容的提问来源于stack exchange,提问作者tommy
相关产品推荐
相关产品推荐

