Mysql

关注公众号 jb51net

关闭
首页 > 数据库 > Mysql > clickhouse复杂时间格式转换

clickhouse复杂时间格式的转换方式

作者:阿爵

这篇文章主要介绍了clickhouse复杂时间格式的转换方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

clickhouse复杂时间格式转换

1.如果只用toDateTime

你需要拼接成一个完全按照YYYY-MM hh:mm:ss格式的字符串给它

否则,它会当你是一个从1970年偏移的毫秒去转换

SELECT 20191231235959 as expire_date, toDateTime(20191231235959), 
concat(toString(floor(20191231235959/10000000000)), '-', 
toString(floor((20191231235959%10000000000)/100000000)), '-', 
toString(floor((20191231235959%100000000)/1000000)), ' ', 
toString(floor((20191231235959%1000000)/10000)),  ':', 
toString(floor((20191231235959%10000)/100)),  ':', 
toString(floor((20191231235959%10000)/100))) as str, toDateTime(str);

2.也可以这样拼接

toDateTime(concat(substring(toString(watch_end_time), 1, 4), '-', 
substring(toString(watch_end_time), 5, 2), 
'-', substring(toString(watch_end_time), 7, 2), ' 
', substring(toString(watch_end_time), 9, 2),
 ':', substring(toString(watch_end_time), 11, 
2), ':', substring(toString(watch_end_time), 13, 2))) as wet

3.但你可以使用一个更强大的函数

parseDateTimeBestEffort(toString(20191201000407)) as wet

结果:

wet
2019-12-01 00:04:07

附相关文档:

将数字类型参数解析为Date或DateTime类型。

与toDate和toDateTime不同,parseDateTimeBestEffort可以进行更复杂的日期格式。

与parseDateTimeBestEffort相同,但它遇到无法处理的日期格式时返回null。

与parseDateTimeBestEffort相同,但它遇到无法处理的日期格式时返回零Date或零DateTime。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文