日期和时间函数
时间和日期函数是用于处理和操作时间和日期数据的函数集合。它们包括获取当前时间、日期格式化、时间比较和计算时间间隔等操作。时间和日期函数可以帮助你处理时间相关的任务,如计算日期差异、定时任务和日历功能等。
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
返回时间戳(纳秒)。整数输入支持的范围在-9223372037
到9223372036
之间。字符串输入支持的范围在1677-09-21T00:12:44.0
到2262-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 |
+----------------------------------+