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
附相关文档:
parseDateTimeBestEffort
将数字类型参数解析为Date或DateTime类型。
与toDate和toDateTime不同,parseDateTimeBestEffort可以进行更复杂的日期格式。
parseDateTimeBestEffortOrNull
与parseDateTimeBestEffort相同,但它遇到无法处理的日期格式时返回null。
parseDateTimeBestEffortOrZero
与parseDateTimeBestEffort相同,但它遇到无法处理的日期格式时返回零Date或零DateTime。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。