← Cloudflare Pipelines / pipelines / sql-reference / scalar-functions
Функции для работы с датой и временем
Реализации скалярных функций 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)Аргументы
- interval: Интервал bin.
- выражение: Временное выражение, с которым выполняется операция. Может быть константой, столбцом или функцией.
- origin-timestamp: Необязательно. Начальная точка, используемая для определения границ интервалов. Если не указано,
по умолчанию используется
1970-01-01T00:00:00Z(эпоха UNIX в UTC).
Поддерживаются следующие интервалы:
- nanoseconds
- microseconds
- milliseconds
- секунды
- 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
-
выражение: Временное выражение, с которым выполняется операция. Может быть константой, столбцом или функцией.
Псевдонимы
- datetrunc
datetrunc
Псевдоним date_trunc.
date_part
Возвращает указанную часть даты в виде целого числа.
date_part(part, expression)Аргументы
-
part: Часть даты для возврата. Поддерживаются следующие части даты:
- year
- quarter (возвращает значение в диапазоне [1, 4] включительно, в зависимости от того, в каком квартале года находится дата)
- month
- week (неделя года)
- day (день месяца)
- hour
- minute
- секунда
- millisecond
- microsecond
- nanosecond
- dow (день недели)
- doy (день года)
- epoch (секунды с начала эпохи Unix)
-
выражение: Временное выражение, с которым выполняется операция. Может быть константой, столбцом или функцией.
Псевдонимы
- 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)Аргументы
- выражение: Выражение, с которым выполняется операция. Может быть константой, столбцом или функцией, результатом которой является дата, время, временная метка или продолжительность.
- 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
Преобразует значение в 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])Аргументы
- выражение: Выражение, с которым выполняется операция. Может быть константой, столбцом или функцией, а также любой комбинацией арифметических операторов.
- 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
Преобразует значение в 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])Аргументы
- выражение: Выражение, с которым выполняется операция. Может быть константой, столбцом или функцией, а также любой комбинацией арифметических операторов.
- 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
Преобразует значение в 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])Аргументы
- выражение: Выражение, с которым выполняется операция. Может быть константой, столбцом или функцией, а также любой комбинацией арифметических операторов.
- 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
Преобразует значение в 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])Аргументы
- выражение: Выражение, с которым выполняется операция. Может быть константой, столбцом или функцией, а также любой комбинацией арифметических операторов.
- 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
Преобразует значение в 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])Аргументы
- выражение: Выражение, с которым выполняется операция. Может быть константой, столбцом или функцией, а также любой комбинацией арифметических операторов.
- 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 timestamp (YYYY-MM-DDT00:00:00.000000000Z).
Целые числа и целые числа без знака интерпретируются как наносекунды с начала эпохи Unix (1970-01-01T00:00:00Z)
возвращает соответствующую временную метку.
from_unixtime(expression)Аргументы
- выражение: Выражение, с которым выполняется операция. Может быть константой, столбцом или функцией, а также любой комбинацией арифметических операторов.
now
Возвращает временную метку UTC на момент запуска конвейера.
Возвращаемое значение now() определяется на этапе компиляции запроса и остаётся постоянным на протяжении всего выполнения конвейера.