我是靠谱客的博主 酷酷小霸王,最近开发中收集的这篇文章主要介绍ClickHouse 使用 formatDateTime() 函数 索引失效,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

在clickhouse中,我们需要将常规的时间格式转换为特定业务场景或者特定格式的时间表示格式,那我们可以使用formatDateTime()函数来实现

简单介绍下:

formatDateTime()
解析:函数根据给定的格式字符串来格式化时间。请注意:格式字符串必须是常量表达式,例如:单个结果列不能有多种格式字符串
语法:formatDateTime(Time, Format [, Timezone])
返回值:根据指定格式返回的日期和时间

select
  formatDateTime(toDate('2020-01-04'), '%D') as date
, formatDateTime(toDate('2020-01-04'), '%F')  as date_1
, formatDateTime(toDate('2021-05-13'), '%Y-%m-%d') as date_2
, formatDateTime(toDate('2021-05-13'), '%Y-%m')    as year_month;
 
select
  formatDateTime(toDateTime('2021-01-13 21:12:13'),'%Y-%m-%d %R:%S')        format_1-- %R24小时HH:MM时间,相当于%H:%M
, formatDateTime(toDateTime('2021-01-13 21:12:13'),'%Y-%m-%d %H:%M:%S')     format_2-- %H 24小时格式(00-23)
, formatDateTime(toDateTime('2021-01-13 21:12:13'),'%Y-%m-%d %I:%M:%S')     format_3-- %I 小时12h格式(01-12)
, formatDateTime(toDateTime('2021-01-13 21:12:13'),'%Y-%m-%d %p %I:%M:%S')  format_4;        -- %p 指定AMPM

在clickhouse中使用这个函数会造成索引失效,会查询全表,降低程序的一个性能。那么改如何解决,可以使用如下的方法:

// 将DateTime向前取整到今天的开始。
toStartOfDay()

//将DateTime向前取整到当前小时的开始。
toStartOfHour()

// 将DateTime向前取整到当前分钟的开始。
toStartOfMinute()

// 将DateTime向前取整到当前秒数的开始。
toStartOfSecond()

最后

以上就是酷酷小霸王为你收集整理的ClickHouse 使用 formatDateTime() 函数 索引失效的全部内容,希望文章能够帮你解决ClickHouse 使用 formatDateTime() 函数 索引失效所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(36)

评论列表共有 0 条评论

立即
投稿
返回
顶部