让决策更智能
新一代智能数据分析平台

Clickhouse SQL日期处理函数及案例分享

观小远发表于:2021年12月07日 11:33:07更新于:2022年04月25日 19:32:53

适用场景:高性能数据集,以及Clickhouse直连数据集。

注意事项:

A. 所有涉及到时分秒(DateTime字段)的函数都可能需要时区参数 timezone,时区格式一般为UTC时区或地理位置的IANA标识符(例如 Europe/Moscow),未指定时区则默认转换为服务器的时区(例如世界标准时间UTC)。

B. 函数大小写敏感,必须按照官方写法使用大小写混写。全部使用大写或小写会引起报错。

C. 以下函数非全部可用函数,是基于BI当前所用19版本汇编而成的常用函数。更多函数请参考Clickhouse官方网站 Dates and Times

1. 时间或日期截取函数——原字段为日期(date)或日期时间(datetime/timestamp), 返回非日期。

00161aed5c74a60198e9026be38f16c

2. 时间或日期截取函数—— 原字段为日期(date)或日期时间(datetime/timestamp), 返回日期或时间

00161aed6306d4dfa0ac677c6131a1b

3. 日期或时间日期生成函数

00161aed63d1a399f1a9c2cdc64d17a

4. 日期时间计算

00161aed64c6933b04de539a091c1d7

5. 日期与时间日期转化

00161aed660db3b5318c78cec0c5cec

案例一:文本类型日期转换为标准日期格式

00161aefa0abb76431d7b3c757ca62f

案例二:标准日期转换为文本类型案例

00161aefa6f06eb20a1a1e4ab718513

附录:

  1. formatDateTime 函数支持的格式修饰符如下,“举例”列是对2018-01-02 22:33:44的格式化结果:

00161aefba728c797a655c6d9133a54

2. 周数计算需要使用mode参数。该参数可以指定星期是从星期日还是星期一开始,以及返回值应在0到53还是从1到53的范围内。取值范围 [0,9],如果省略了mode参数,则默认模式为0。使用mode参数的函数有 toWeek(date[,mode]),toYearWeek(date[,mode]),toStartOfWeek(t[,mode])。

toISOWeek()是一个兼容函数,等效于toWeek(date,3)。

下表描述了mode参数的工作方式:

00161aefcc3a9379ef8b5876314cb51

对于象“with 4 or more days this year,”的mode值,根据ISO 8601:1988对周进行编号:

  • 如果包含1月1日的一周在后一年度中有4天或更多天,则为第1周。

  • 否则,它是上一年的最后一周,下周是第1周。

对于像“contains January 1”的mode值, 包含1月1日的那周为本年度的第1周。


    您需要登录后才可以回复