mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-30 11:32:03 +00:00
113 lines
3.5 KiB
Markdown
113 lines
3.5 KiB
Markdown
---
|
||
slug: /zh/sql-reference/functions/time-window-functions
|
||
sidebar_position: 68
|
||
sidebar_label: 时间窗口
|
||
---
|
||
|
||
# 时间窗口函数 {#time-window-han-shu}
|
||
|
||
时间窗口函数用于获取窗口的起始(包含边界)和结束时间(不包含边界)。系统支持的时间窗口函数如下:
|
||
|
||
## tumble {#time-window-functions-tumble}
|
||
|
||
tumble窗口是连续的、不重叠的固定大小(`interval`)时间窗口。
|
||
|
||
``` sql
|
||
tumble(time_attr, interval [, timezone])
|
||
```
|
||
|
||
**参数**
|
||
- `time_attr` - [DateTime](../../sql-reference/data-types/datetime.md)类型的时间数据。
|
||
- `interval` - [Interval](../../sql-reference/data-types/special-data-types/interval.md)类型的窗口大小。
|
||
- `timezone` — [Timezone name](../../operations/server-configuration-parameters/settings.md#server_configuration_parameters-timezone) 类型的时区(可选参数).
|
||
|
||
**返回值**
|
||
|
||
- tumble窗口的开始(包含边界)和结束时间(不包含边界)
|
||
|
||
类型: `Tuple(DateTime, DateTime)`
|
||
|
||
**示例**
|
||
|
||
查询:
|
||
|
||
``` sql
|
||
SELECT tumble(now(), toIntervalDay('1'))
|
||
```
|
||
|
||
结果:
|
||
|
||
``` text
|
||
┌─tumble(now(), toIntervalDay('1'))─────────────┐
|
||
│ ['2020-01-01 00:00:00','2020-01-02 00:00:00'] │
|
||
└───────────────────────────────────────────────┘
|
||
```
|
||
|
||
## hop {#time-window-functions-hop}
|
||
|
||
hop窗口是一个固定大小(`window_interval`)的时间窗口,并按照一个固定的滑动间隔(`hop_interval`)滑动。当滑动间隔小于窗口大小时,滑动窗口间存在重叠,此时一个数据可能存在于多个窗口。
|
||
|
||
``` sql
|
||
hop(time_attr, hop_interval, window_interval [, timezone])
|
||
```
|
||
|
||
**参数**
|
||
|
||
- `time_attr` - [DateTime](../../sql-reference/data-types/datetime.md)类型的时间数据。
|
||
- `hop_interval` - [Interval](../../sql-reference/data-types/special-data-types/interval.md)类型的滑动间隔,需要大于0。
|
||
- `window_interval` - [Interval](../../sql-reference/data-types/special-data-types/interval.md)类型的窗口大小,需要大于0。
|
||
- `timezone` — [Timezone name](../../operations/server-configuration-parameters/settings.md#server_configuration_parameters-timezone) 类型的时区(可选参数)。
|
||
|
||
**返回值**
|
||
|
||
- hop窗口的开始(包含边界)和结束时间(不包含边界)。由于一个数据可能存在于多个窗口,脱离window view单独调用该函数时只返回第一个窗口数据。
|
||
|
||
类型: `Tuple(DateTime, DateTime)`
|
||
|
||
**示例**
|
||
|
||
查询:
|
||
|
||
``` sql
|
||
SELECT hop(now(), INTERVAL '1' SECOND, INTERVAL '2' SECOND)
|
||
```
|
||
|
||
结果:
|
||
|
||
``` text
|
||
┌─hop(now(), toIntervalSecond('1'), toIntervalSecond('2'))──┐
|
||
│ ('2020-01-14 16:58:22','2020-01-14 16:58:24') │
|
||
└───────────────────────────────────────────────────────────┘
|
||
```
|
||
|
||
## tumbleStart {#time-window-functions-tumblestart}
|
||
|
||
返回tumble窗口的开始时间(包含边界)。
|
||
|
||
``` sql
|
||
tumbleStart(time_attr, interval [, timezone]);
|
||
```
|
||
|
||
## tumbleEnd {#time-window-functions-tumbleend}
|
||
|
||
返回tumble窗口的结束时间(不包含边界)。
|
||
|
||
``` sql
|
||
tumbleEnd(time_attr, interval [, timezone]);
|
||
```
|
||
|
||
## hopStart {#time-window-functions-hopstart}
|
||
|
||
返回hop窗口的开始时间(包含边界)。
|
||
|
||
``` sql
|
||
hopStart(time_attr, hop_interval, window_interval [, timezone]);
|
||
```
|
||
|
||
## hopEnd {#time-window-functions-hopend}
|
||
|
||
返回hop窗口的结束时间(不包含边界)。
|
||
|
||
``` sql
|
||
hopEnd(time_attr, hop_interval, window_interval [, timezone]);
|
||
``` |