slug: /zh/sql-reference/functions/time-window-functions sidebar_position: 68

sidebar_label: 时间窗口

时间窗口函数 {#time-window-han-shu}

时间窗口函数用于获取窗口的起始(包含边界)和结束时间(不包含边界)。系统支持的时间窗口函数如下:

tumble {#time-window-functions-tumble}

tumble窗口是连续的、不重叠的固定大小(interval)时间窗口。

  1. tumble(time_attr, interval [, timezone])

参数

  • time_attr - DateTime类型的时间数据。
  • interval - Interval类型的窗口大小。
  • timezoneTimezone name 类型的时区(可选参数).

返回值

  • tumble窗口的开始(包含边界)和结束时间(不包含边界)

类型: Tuple(DateTime, DateTime)

示例

查询:

  1. SELECT tumble(now(), toIntervalDay('1'))

结果:

  1. ┌─tumble(now(), toIntervalDay('1'))─────────────┐
  2. ['2020-01-01 00:00:00','2020-01-02 00:00:00']
  3. └───────────────────────────────────────────────┘

hop {#time-window-functions-hop}

hop窗口是一个固定大小(window_interval)的时间窗口,并按照一个固定的滑动间隔(hop_interval)滑动。当滑动间隔小于窗口大小时,滑动窗口间存在重叠,此时一个数据可能存在于多个窗口。

  1. hop(time_attr, hop_interval, window_interval [, timezone])

参数

  • time_attr - DateTime类型的时间数据。
  • hop_interval - Interval类型的滑动间隔,需要大于0。
  • window_interval - Interval类型的窗口大小,需要大于0。
  • timezoneTimezone name 类型的时区(可选参数)。

返回值

  • hop窗口的开始(包含边界)和结束时间(不包含边界)。由于一个数据可能存在于多个窗口,脱离window view单独调用该函数时只返回第一个窗口数据。

类型: Tuple(DateTime, DateTime)

示例

查询:

  1. SELECT hop(now(), INTERVAL '1' SECOND, INTERVAL '2' SECOND)

结果:

  1. ┌─hop(now(), toIntervalSecond('1'), toIntervalSecond('2'))──┐
  2. ('2020-01-14 16:58:22','2020-01-14 16:58:24')
  3. └───────────────────────────────────────────────────────────┘

tumbleStart {#time-window-functions-tumblestart}

返回tumble窗口的开始时间(包含边界)。

  1. tumbleStart(time_attr, interval [, timezone]);

tumbleEnd {#time-window-functions-tumbleend}

返回tumble窗口的结束时间(不包含边界)。

  1. tumbleEnd(time_attr, interval [, timezone]);

hopStart {#time-window-functions-hopstart}

返回hop窗口的开始时间(包含边界)。

  1. hopStart(time_attr, hop_interval, window_interval [, timezone]);

hopEnd {#time-window-functions-hopend}

返回hop窗口的结束时间(不包含边界)。

  1. hopEnd(time_attr, hop_interval, window_interval [, timezone]);