Galaxy 帮助中心

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

创建于 2022-11-01 / 最近更新于 2022-11-08 / 893
字体: [默认] [大] [更大]

适用场景

高性能数据集,以及Clickhouse直连数据集。

注意事项

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

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

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

日期支持函数

时间或日期截取函数

——原字段为日期(date)或日期时间(datetime/timestamp), 返回非日期。

image.png

时间或日期截取函数

——原字段为日期(date)或日期时间(datetime/timestamp), 返回日期或时间

image.png

日期或时间日期生成函数

image.png

日期时间计算

image.png

日期与时间日期转化

image.png

案例

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

image.png

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

image.png

附录:

  1. formatDateTime 函数支持的格式修饰符

“举例”列是对2018-01-02 22:33:44的格式化结果:

image.png

  1. 周数计算需要使用mode参数。

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

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

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

image.png

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

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

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

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


0 人点赞过