跳到主要内容
版本:2.4.x

日期和时间函数

时间和日期函数是用于处理和操作时间和日期数据的函数集合。它们包括获取当前时间、日期格式化、时间比较和计算时间间隔等操作。时间和日期函数可以帮助你处理时间相关的任务,如计算日期差异、定时任务和日历功能等。

now

返回当前 UTC 时间戳。

now()
查看 now() 示例
SELECT now();
+--------------------------------+
| now() |
+--------------------------------+
| 2024-03-11T09:52:26.574620673Z |
+--------------------------------+

current_date

返回当前 UTC 日期。

current_date()
查看 current_date 示例
SELECT current_date();
+----------------+
| current_date() |
+----------------+
| 2024-03-11 |
+----------------+

current_time

返回当前 UTC 时间。

current_time()
查看 current_date 示例
SELECT current_time();
+--------------------+
| current_time() |
+--------------------+
| 11:30:04.708668926 |
+--------------------+

date_bin

计算时间间隔并返回最接近指定时间戳的间隔的起点。通过将行分组到基于时间的“箱”或“窗口”并应用聚合或选择器函数,使用 date_bin 对时间序列数据进行下采样到每个窗口。

date_bin(interval, expression, origin-timestamp)
参数描述
interval
expression要操作的时间表达式。可以是常量、列或函数。
origin-timestamp可选。用于确定 bin 边界的起点。如果未指定,则默认为 1970-01-01T00:00:00Z(UTC 中的 UNIX 纪元)。

支持的 interval 时间单位请参考 持续时间单位

查看 date_bin 示例

如果您将数据分箱为 15 分钟间隔,则输入时间戳 2024-01-01T18:18:18Z 将更新为其所在 15 分钟分箱的开始时间:2024-01-01T18:15:00Z

SELECT date_bin(INTERVAL '15' MINUTE, TIMESTAMP '2024-01-01T18:18:18Z');
+-----------------------------------------------------------------------------+
| date_bin(IntervalMonthDayNano("900000000000"),Utf8("2024-01-01T18:18:18Z")) |
+-----------------------------------------------------------------------------+
| 2024-01-01T18:15:00 |
+-----------------------------------------------------------------------------+

date_trunc

将时间戳值截断为指定的精度。

date_trunc(precision, expression)
参数描述
precision截断到的时间精度。支持:year, quarter, month, week, day, hour, minute, second
expression要操作的时间表达式。可以是常量、列或函数。

别名:datetrunc

查看 date_trunc 示例
SELECT date_trunc('month', time) AS month, avg(temperature) AS avg_temperature FROM air GROUP BY month;
+---------------------+-------------------+
| month | avg_temperature |
+---------------------+-------------------+
| 2023-02-01T00:00:00 | 65.09259672619048 |
| 2023-03-01T00:00:00 | 65.00373418686176 |
| 2023-01-01T00:00:00 | 64.96063701923077 |
+---------------------+-------------------+

date_part

以整数形式返回日期的指定部分。

date_part(part, expression)
选项描述
part要返回的日期的一部分。支持:支持:year, quarter, month, week, day, hour, minute, second, millisecond, microsecond, nanosecond, dow, doy, epoch
expression要操作的时间表达式。可以是常量、列或函数。

别名:datepart

查看 date_part 示例

从日期中提取月份。

SELECT date_part('month', '2024-05-13') AS month;

extract

以整数形式从时间值返回子字段。与 date_part类似,但参数不同。

extract(field FROM source)
选项描述
field要返回的日期的一部分。支持:支持:year, quarter, month, week, day, hour, minute, second, millisecond, microsecond, nanosecond, dow, doy, epoch
source要操作的时间表达式。可以是常量、列或函数。
查看 extract 示例

从日期中提取月份。

SELECT extract(month FROM  '2024-05-13') AS month;

to_timestamp

将值转换为时间戳(YYYY-MM-DDT00:00:00Z)。支持字符串、整数、无符号整数和双精度浮点数类型作为输入。如果没有提供[Chrono格式],字符串将按照RFC3339(例如2023-07-20T05:44:00)解析。整数、无符号整数和双精度浮点数被解释为自Unix纪元(1970-01-01T00:00:00Z)以来的秒数。返回相应的时间戳。

提示

to_timestamp返回时间戳(纳秒)。整数输入支持的范围在-92233720379223372036之间。字符串输入支持的范围在1677-09-21T00:12:44.02262-04-11T23:47:16.0之间。请对超出支持范围的输入使用 to_timestamp_seconds

to_timestamp(expression[, ..., format_n])
选项描述
expression要操作的表达式。可以是常量、列或函数,以及算术运算符的任意组合。
format_n可选的 Chrono 格式字符串,用于解析表达式。将按照格式出现的顺序尝试格式,并返回第一个成功的格式。如果没有任何格式能够成功解析表达式,则会返回错误。
查看 to_timestamp 示例
select to_timestamp('2023-01-31T09:26:56.123456789-05:00');
+-----------------------------------------------------------+
| to_timestamp(Utf8("2023-01-31T09:26:56.123456789-05:00")) |
+-----------------------------------------------------------+
| 2023-01-31T14:26:56.123456789 |
+-----------------------------------------------------------+

to_timestamp_millis

将值转换为时间戳(YYYY-MM-DDT00:00:00.000Z)。支持字符串、整数和无符号整数类型作为输入。如果没有提供Chrono格式,字符串将按照RFC3339(例如2023-07-20T05:44:00)解析。整数和无符号整数被解释为自Unix纪元(1970-01-01T00:00:00Z)以来的毫秒数。返回相应的时间戳。

to_timestamp_millis(expression[, ..., format_n])
选项描述
expression要操作的表达式。可以是常量、列或函数,以及算术运算符的任意组合。
format_n可选的 Chrono 格式字符串,用于解析表达式。将按照格式出现的顺序尝试格式,并返回第一个成功的格式。如果没有任何格式能够成功解析表达式,则会返回错误。
查看 to_timestamp_millis 示例
select to_timestamp_millis('2023-01-31T09:26:56.123456789-05:00');
+------------------------------------------------------------------+
| to_timestamp_millis(Utf8("2023-01-31T09:26:56.123456789-05:00")) |
+------------------------------------------------------------------+
| 2023-01-31T14:26:56.123 |
+------------------------------------------------------------------+

to_timestamp_micros

将值转换为时间戳(YYYY-MM-DDT00:00:00.000000Z)。支持字符串、整数和无符号整数类型作为输入。如果没有提供Chrono格式,字符串将按照RFC3339(例如2023-07-20T05:44:00)解析。整数和无符号整数被解释为自Unix纪元(1970-01-01T00:00:00Z)以来的微秒数。返回相应的时间戳。

to_timestamp_micros(expression[, ..., format_n])
选项描述
expression要操作的表达式。可以是常量、列或函数,以及算术运算符的任意组合。
format_n可选的 Chrono 格式字符串,用于解析表达式。将按照格式出现的顺序尝试格式,并返回第一个成功的格式。如果没有任何格式能够成功解析表达式,则会返回错误。
查看 to_timestamp_micros 示例
select to_timestamp_micros('2023-01-31T09:26:56.123456789-05:00');
+------------------------------------------------------------------+
| to_timestamp_micros(Utf8("2023-01-31T09:26:56.123456789-05:00")) |
+------------------------------------------------------------------+
| 2023-01-31T14:26:56.123456 |
+------------------------------------------------------------------+

to_timestamp_seconds

将值转换为时间戳(YYYY-MM-DDT00:00:00.000Z)。支持字符串、整数和无符号整数类型作为输入。如果没有提供Chrono格式,字符串将按照RFC3339(例如2023-07-20T05:44:00)解析。整数和无符号整数被解释为自Unix纪元(1970-01-01T00:00:00Z)以来的秒数。返回相应的时间戳。

to_timestamp_seconds(expression[, ..., format_n])
选项描述
expression要操作的表达式。可以是常量、列或函数,以及算术运算符的任意组合。
format_n可选的 Chrono 格式字符串,用于解析表达式。将按照格式出现的顺序尝试格式,并返回第一个成功的格式。如果没有任何格式能够成功解析表达式,则会返回错误。
查看 to_timestamp_seconds 示例
select to_timestamp_seconds('2023-01-31T09:26:56.123456789-05:00');
+-------------------------------------------------------------------+
| to_timestamp_seconds(Utf8("2023-01-31T09:26:56.123456789-05:00")) |
+-------------------------------------------------------------------+
| 2023-01-31T14:26:56 |
+-------------------------------------------------------------------+

from_unixtime

将整数转换为RFC3339时间戳格式(YYYY-MM-DDT00:00:00.000000000Z)。整数和无符号整数被解释为自Unix纪元(1970-01-01T00:00:00Z)以来的秒数,返回相应的时间戳。

from_unixtime(expression)
选项描述
expression要操作的表达式。可以是常量、列或函数,以及算术运算符的任意组合。
SELECT from_unixtime(1672531200);
+----------------------------------+
| from_unixtime(Int64(1672531200)) |
+----------------------------------+
| 2023-01-01T00:00:00 |
+----------------------------------+