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。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
MySQL 8.0 之索引跳跃扫描(Index Skip Scan)
这篇文章主要介绍了MySQL 8.0 之索引跳跃扫描(Index Skip Scan)的相关资料,帮助大家学习MySQL8.0的新特性,感兴趣的朋友可以了解下2020-10-10MySql采用GROUP_CONCAT合并多条数据显示的方法
这篇文章主要介绍了MySql采用GROUP_CONCAT合并多条数据显示的方法,是MySQL数据库程序设计中常见的实用技巧,需要的朋友可以参考下2014-10-10
最新评论