INTEGRITY Документация

Функции для работы с датой и временем

Реализации скалярных функций Cloudflare Pipelines основаны на Apache DataFusion ↗ (через Arroyo ↗) и эта документация составлена на основе справочника функций DataFusion.

date_bin

Вычисляет временные интервалы и возвращает начало интервала, ближайшего к указанной метке времени. Используйте date_bin для понижения частоты дискретизации временных рядов путём группировки строк в «интервалы» или «окна» на основе времени и применения агрегатной функции или функции выбора к каждому окну.

Например, если данные группируются («bin») или разбиваются на окна («window») по 15-минутным интервалам, входная метка времени 2023-01-01T18:18:18Z будет обновлено на время начала 15-минутного интервала, в который оно попадает: 2023-01-01T18:15:00Z.

date_bin(interval, expression, origin-timestamp)

Аргументы

Поддерживаются следующие интервалы:

date_trunc

Усекает значение временной метки до указанной точности.

date_trunc(precision, expression)

Аргументы

Псевдонимы

datetrunc

Псевдоним date_trunc.

date_part

Возвращает указанную часть даты в виде целого числа.

date_part(part, expression)

Аргументы

Псевдонимы

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)

Аргументы

Пример

> 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)

Аргументы

Пример

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

Псевдонимы

to_timestamp

Преобразует значение в timestamp (YYYY-MM-DDT00:00:00Z). Поддерживает в качестве входных данных строки, целые числа, целые числа без знака и числа с плавающей точкой двойной точности. Строки разбираются в формате RFC3339 (например, '2023-07-20T05:44:00'), если не указаны [Chrono formats]. Целые числа, целые числа без знака и числа с плавающей точкой двойной точности интерпретируются как секунды с начала эпохи Unix (1970-01-01T00:00:00Z). Возвращает соответствующую временную метку.

Примечание: to_timestamp возвращает Timestamp(Nanosecond). Допустимый диапазон для целочисленного ввода: от -9223372037 и 9223372036. Допустимый диапазон для строкового ввода: от 1677-09-21T00:12:44.0 и 2262-04-11T23:47:16.0. Используйте to_timestamp_seconds для входного значения, выходящего за поддерживаемые границы.

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

Аргументы

Пример

> 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

Преобразует значение в timestamp (YYYY-MM-DDT00:00:00.000Z). Поддерживает в качестве входных данных строки, целые числа и целые числа без знака. Строки разбираются в формате RFC3339 (например, '2023-07-20T05:44:00'), если не указаны Формат Chrono ↗ы предоставляются. Целые и беззнаковые целые числа интерпретируются как количество миллисекунд, прошедшее с начала эпохи Unix (1970-01-01T00:00:00Z). Возвращает соответствующую временную метку.

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

Аргументы

Пример

> 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

Преобразует значение в timestamp (YYYY-MM-DDT00:00:00.000000Z). Поддерживает в качестве входных данных строки, целые числа и целые числа без знака. Строки разбираются в формате RFC3339 (например, '2023-07-20T05:44:00'), если не указаны Формат Chrono ↗ы предоставляются. Целые и беззнаковые целые числа интерпретируются как количество микросекунд, прошедшее с начала эпохи Unix (1970-01-01T00:00:00Z) Возвращает соответствующую метку времени.

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

Аргументы

Пример

> 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

Преобразует значение в timestamp (YYYY-MM-DDT00:00:00.000000000Z). Поддерживает в качестве входных данных строки, целые числа и целые числа без знака. Строки разбираются в формате RFC3339 (например, '2023-07-20T05:44:00'), если не указаны [Chrono formats]. Целые числа и целые числа без знака интерпретируются как наносекунды с начала эпохи Unix (1970-01-01T00:00:00Z). Возвращает соответствующую временную метку.

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

Аргументы

Пример

> 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

Преобразует значение в timestamp (YYYY-MM-DDT00:00:00.000Z). Поддерживает в качестве входных данных строки, целые числа и целые числа без знака. Строки разбираются в формате RFC3339 (например, '2023-07-20T05:44:00'), если не указаны Формат Chrono ↗ы предоставляются. Целые и беззнаковые целые числа интерпретируются как количество секунд, прошедшее с начала эпохи Unix (1970-01-01T00:00:00Z). Возвращает соответствующую временную метку.

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

Аргументы

Пример

> 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 timestamp (YYYY-MM-DDT00:00:00.000000000Z). Целые числа и целые числа без знака интерпретируются как наносекунды с начала эпохи Unix (1970-01-01T00:00:00Z) возвращает соответствующую временную метку.

from_unixtime(expression)

Аргументы

now

Возвращает временную метку UTC на момент запуска конвейера.

Возвращаемое значение now() определяется на этапе компиляции запроса и остаётся постоянным на протяжении всего выполнения конвейера.