跳转到内容
搜索文档

时间和日期函数

最后更新 查看 MarkdownAgent 设置

Cloudflare Pipelines 标量函数实现基于 Apache DataFusion(通过 Arroyo),本文档源自 DataFusion 函数参考。

date_bin

计算时间间隔并返回最接近指定时间戳的间隔起始时间。 使用 date_bin 通过将行分组到基于时间的"bin"或"window"中,并对每个窗口应用聚合或选择函数来对时间序列数据进行降采样。

例如,如果您将数据"分箱"或"窗口化"为 15 分钟间隔,输入时间戳 2023-01-01T18:18:18Z 将更新为其所在 15 分钟 bin 的起始时间:2023-01-01T18:15:00Z

date_bin(interval, expression, origin-timestamp)

参数

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

支持以下间隔:

  • nanoseconds
  • microseconds
  • milliseconds
  • seconds
  • minutes
  • hours
  • days
  • weeks
  • months
  • years
  • century

date_trunc

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

date_trunc(precision, expression)

参数

  • precision: 要截断到的时间精度。 支持以下精度:

    • year / YEAR
    • quarter / QUARTER
    • month / MONTH
    • week / WEEK
    • day / DAY
    • hour / HOUR
    • minute / MINUTE
    • second / SECOND
  • expression: 要操作的时间表达式。 可以是常量、列或函数。

别名

  • datetrunc

datetrunc

date_trunc 的别名。

date_part

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

date_part(part, expression)

参数

  • part: 要返回的日期部分。 支持以下日期部分:

    • year
    • quarter (根据日期所在年份的四分位,返回 [1, 4] 范围内的值)
    • month
    • week (一年中的第几周)
    • day (一个月中的第几天)
    • hour
    • minute
    • second
    • millisecond
    • microsecond
    • nanosecond
    • dow (一周中的第几天)
    • doy (一年中的第几天)
    • epoch (自 Unix 纪元以来的秒数)
  • expression: 要操作的时间表达式。 可以是常量、列或函数。

别名

  • datepart

datepart

date_part 的别名。

extract

以整数形式返回时间值的子字段。

extract(field FROM source)

等效于调用 date_part('field', source)。例如,以下等效:

extract(day FROM '2024-04-13'::date)
date_part('day', '2024-04-13'::date)

参见 date_part

make_date

从年/月/日组件部分创建日期。

make_date(year, month, day)

参数

  • year: 创建日期时使用的年份。 可以是常量、列或函数,以及算术运算符的任何组合。
  • month: 创建日期时使用的月份。 可以是常量、列或函数,以及算术运算符的任何组合。
  • day: 创建日期时使用的天数。 可以是常量、列或函数,以及算术运算符的任何组合。

示例

> select make_date(2023, 1, 31);
+-------------------------------------------+
| make_date(Int64(2023),Int64(1),Int64(31)) |
+-------------------------------------------+
| 2023-01-31                                |
+-------------------------------------------+
> select make_date('2023', '01', '31');
+-----------------------------------------------+
| make_date(Utf8("2023"),Utf8("01"),Utf8("31")) |
+-----------------------------------------------+
| 2023-01-31                                    |
+-----------------------------------------------+

to_char

基于 [Chrono 格式] 返回日期、时间、时间戳或持续时间的字符串表示。与 PostgreSQL 等效函数不同,不支持数字格式化。

to_char(expression, format)

参数

  • expression: 要操作的表达式。 可以是常量、列或函数,其结果为日期、时间、时间戳或持续时间。
  • format: 用于转换表达式的 [Chrono 格式] 字符串。

示例

> > select to_char('2023-03-01'::date, '%d-%m-%Y');
+----------------------------------------------+
| to_char(Utf8("2023-03-01"),Utf8("%d-%m-%Y")) |
+----------------------------------------------+
| 01-03-2023                                   |
+----------------------------------------------+

别名

  • date_format

to_timestamp

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

注意:to_timestamp 返回 Timestamp(Nanosecond)。整数输入的支持范围为 -92233720379223372036。 字符串输入的支持范围为 1677-09-21T00:12:44.02262-04-11T23:47:16.0。请使用 to_timestamp_seconds 处理超出支持范围的输入。

to_timestamp(expression[, ..., format_n])

参数

  • expression: 要操作的表达式。 可以是常量、列或函数,以及算术运算符的任何组合。
  • format_n: 可选的 [Chrono 格式] 字符串,用于解析表达式。格式将按出现顺序依次尝试, 返回第一个成功解析的结果。如果所有格式都无法成功解析表达式,将返回错误。

示例

> 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                             |
+-----------------------------------------------------------+
> select to_timestamp('03:59:00.123456789 05-17-2023', '%c', '%+', '%H:%M:%S%.f %m-%d-%Y');
+--------------------------------------------------------------------------------------------------------+
| to_timestamp(Utf8("03:59:00.123456789 05-17-2023"),Utf8("%c"),Utf8("%+"),Utf8("%H:%M:%S%.f %m-%d-%Y")) |
+--------------------------------------------------------------------------------------------------------+
| 2023-05-17T03:59:00.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 格式] 字符串,用于解析表达式。格式将按出现顺序依次尝试, 返回第一个成功解析的结果。如果所有格式都无法成功解析表达式,将返回错误。

示例

> 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                                          |
+------------------------------------------------------------------+
> select to_timestamp_millis('03:59:00.123456789 05-17-2023', '%c', '%+', '%H:%M:%S%.f %m-%d-%Y');
+---------------------------------------------------------------------------------------------------------------+
| to_timestamp_millis(Utf8("03:59:00.123456789 05-17-2023"),Utf8("%c"),Utf8("%+"),Utf8("%H:%M:%S%.f %m-%d-%Y")) |
+---------------------------------------------------------------------------------------------------------------+
| 2023-05-17T03:59:00.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 格式] 字符串,用于解析表达式。格式将按出现顺序依次尝试, 返回第一个成功解析的结果。如果所有格式都无法成功解析表达式,将返回错误。

示例

> 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                                       |
+------------------------------------------------------------------+
> select to_timestamp_micros('03:59:00.123456789 05-17-2023', '%c', '%+', '%H:%M:%S%.f %m-%d-%Y');
+---------------------------------------------------------------------------------------------------------------+
| to_timestamp_micros(Utf8("03:59:00.123456789 05-17-2023"),Utf8("%c"),Utf8("%+"),Utf8("%H:%M:%S%.f %m-%d-%Y")) |
+---------------------------------------------------------------------------------------------------------------+
| 2023-05-17T03:59:00.123456                                                                                    |
+---------------------------------------------------------------------------------------------------------------+

to_timestamp_nanos

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

to_timestamp_nanos(expression[, ..., format_n])

参数

  • expression: 要操作的表达式。 可以是常量、列或函数,以及算术运算符的任何组合。
  • format_n: 可选的 [Chrono 格式] 字符串,用于解析表达式。格式将按出现顺序依次尝试, 返回第一个成功解析的结果。如果所有格式都无法成功解析表达式,将返回错误。

示例

> select to_timestamp_nanos('2023-01-31T09:26:56.123456789-05:00');
+-----------------------------------------------------------------+
| to_timestamp_nanos(Utf8("2023-01-31T09:26:56.123456789-05:00")) |
+-----------------------------------------------------------------+
| 2023-01-31T14:26:56.123456789                                   |
+-----------------------------------------------------------------+
> select to_timestamp_nanos('03:59:00.123456789 05-17-2023', '%c', '%+', '%H:%M:%S%.f %m-%d-%Y');
+--------------------------------------------------------------------------------------------------------------+
| to_timestamp_nanos(Utf8("03:59:00.123456789 05-17-2023"),Utf8("%c"),Utf8("%+"),Utf8("%H:%M:%S%.f %m-%d-%Y")) |
+--------------------------------------------------------------------------------------------------------------+
| 2023-05-17T03:59:00.123456789                                                                                |
+---------------------------------------------------------------------------------------------------------------+

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 格式] 字符串,用于解析表达式。格式将按出现顺序依次尝试, 返回第一个成功解析的结果。如果所有格式都无法成功解析表达式,将返回错误。

示例

> 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                                               |
+-------------------------------------------------------------------+
> select to_timestamp_seconds('03:59:00.123456789 05-17-2023', '%c', '%+', '%H:%M:%S%.f %m-%d-%Y');
+----------------------------------------------------------------------------------------------------------------+
| to_timestamp_seconds(Utf8("03:59:00.123456789 05-17-2023"),Utf8("%c"),Utf8("%+"),Utf8("%H:%M:%S%.f %m-%d-%Y")) |
+----------------------------------------------------------------------------------------------------------------+
| 2023-05-17T03:59:00                                                                                            |
+----------------------------------------------------------------------------------------------------------------+

from_unixtime

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

from_unixtime(expression)

参数

  • expression: 要操作的表达式。 可以是常量、列或函数,以及算术运算符的任何组合。

now

返回 pipeline 启动时的 UTC 时间戳。

now() 返回值在查询编译时确定,在整个 pipeline 执行过程中保持恒定。

这篇文档对您有帮助吗?