Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

时间窗口函数

Experimental 功能
ClickHouse Cloud 不支持此功能

时间窗口函数返回对应窗口的下界 (包含) 和上界 (不包含) 。 下面列出了用于 WindowView 的相关函数:

hop

引入版本:v21.12.0

跳跃时间窗口具有固定的窗口时长 (window_interval) ,并按指定的跳跃间隔 (hop_interval) 滑动。如果 hop_interval 小于 window_interval,则跳跃窗口会相互重叠。因此,记录可能会被分配到多个窗口。

由于一条记录可能会被分配到多个 hop 窗口,因此在不使用 WINDOW VIEW 时,hop 函数仅返回第一个窗口的边界。

语法

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

参数

  • time_attr — 日期和时间。DateTime
  • hop_interval — 正的 Hop 间隔。Interval
  • window_interval — 正的窗口时间间隔。Interval
  • timezone — 可选。时区名称。String

返回值

返回对应跳跃窗口的下界 (含) 和上界 (不含) 。Tuple(DateTime, DateTime)

示例

跳跃窗口

SELECT hop(toDateTime('2026-01-02 03:04:05', 'UTC'), INTERVAL '1' DAY, INTERVAL '2' DAY)
('2026-01-01 00:00:00','2026-01-03 00:00:00')

hopEnd

引入版本:v22.1.0

返回对应跳跃窗口的上界 (不包含) 。

由于一条记录可能会被分配到多个 hop 窗口,因此在未使用 WINDOW VIEW 的情况下使用 hop 函数时,该函数仅返回第一个窗口的边界。

语法

hopEnd(time_attr, hop_interval, window_interval[, timezone])

参数

  • time_attr — 日期和时间。DateTime
  • hop_interval — 正的 Hop 间隔。Interval
  • window_interval — 正的窗口时间间隔。Interval
  • timezone — 可选。时区名称。String

返回值

返回对应跳跃窗口的上界 (不包含) 。DateTime

示例

跳跃窗口 结束时间

SELECT hopEnd(toDateTime('2026-01-02 03:04:05', 'UTC'), INTERVAL '1' DAY, INTERVAL '2' DAY)
2026-01-03 00:00:00

hopStart

引入版本:v22.1.0

返回对应跳跃窗口的下界 (包含) 。

由于一条记录可能会被分配到多个 hop 窗口,因此在未结合 WINDOW VIEW 使用 hop 函数时,该函数只返回第一个窗口的边界。

语法

hopStart(time_attr, hop_interval, window_interval[, timezone])

参数

  • time_attr — 日期和时间。DateTime
  • hop_interval — 正的 Hop 间隔。Interval
  • window_interval — 正的窗口时间间隔。Interval
  • timezone — 可选。时区名称。String

返回值

返回对应跳跃窗口的下界 (包含) 。DateTime

示例

跳跃窗口起始时间

SELECT hopStart(toDateTime('2026-01-02 03:04:05', 'UTC'), INTERVAL '1' DAY, INTERVAL '2' DAY)
2026-01-01 00:00:00

tumble

引入版本:v21.12.0

滚动时间窗口会将记录分配到持续时间固定 (interval) 、连续且互不重叠的窗口中。

语法

tumble(time_attr, interval[, timezone])

参数

  • time_attr — 日期和时间。DateTime
  • interval — 窗口时间间隔,类型为 Interval。Interval
  • timezone — 可选。时区名称。String

返回值

返回对应滚动窗口的下界 (包含) 和上界 (不包含) 。Tuple(DateTime, DateTime)

示例

滚动窗口

SELECT tumble(toDateTime('2026-01-02 03:04:05', 'UTC'), toIntervalDay('1'))
('2026-01-02 00:00:00','2026-01-03 00:00:00')

tumbleEnd

于以下版本引入:v22.1.0

返回相应滚动窗口的上界 (不包含) 。

语法

tumbleEnd(time_attr, interval[, timezone])

参数

  • time_attr — 日期和时间。DateTime
  • interval — 窗口的时间间隔。Interval
  • timezone — 可选。时区名称。String

返回值

返回对应滚动窗口的上界 (不包含) 。DateTime

示例

滚动窗口结束

SELECT tumbleEnd(toDateTime('2026-01-02 03:04:05', 'UTC'), toIntervalDay('1'))
2026-01-03 00:00:00

tumbleStart

引入版本:v22.1.0

返回对应滚动窗口的下界 (包含) 。

语法

tumbleStart(time_attr, interval[, timezone])

参数

  • time_attr — 日期和时间。DateTime
  • intervalInterval 类型的窗口时间间隔。Interval
  • timezone — 可选。时区名称。String

返回值

返回对应滚动窗口的下界 (包含) 。DateTime

示例

滚动窗口起始

SELECT tumbleStart(toDateTime('2026-01-02 03:04:05', 'UTC'), toIntervalDay('1'))
2026-01-02 00:00:00

windowID

Introduced in:v22.1.0

返回对应滚动窗口或跳跃窗口的窗口标识符。 此函数只能与 WINDOW VIEW 配合使用。

语法

windowID(time_attr, interval[, timezone])

参数

  • time_attr — 日期和时间。DateTime
  • interval — 以 Interval 表示的窗口时间间隔。Interval
  • timezone — 可选。时区名称。String

返回值

返回对应窗口的标识符。UInt32

示例

窗口 ID

SELECT windowID(toDateTime('2026-01-02 03:04:05', 'UTC'), toIntervalDay('1'))
1767398400
Navigation