с Firebird 6.0 ваша версия: любая

GENERATE_SERIES

Версии сервера

2.53.04.05.06.0
−−−−Да

Доступно в

DSQL, PSQL

Формат

<generate_series_function> ::=
    GENERATE_SERIES(<start>, <finish> [, <step>])
    [AS] <correlation name> [ ( <derived column name> ) ]

Описание

Функция GENERATE_SERIES создаёт ряд чисел в заданном интервале. Интервал и шаг между значениями определяются пользователем.

Параметры:

Функция возвращает набор данных со столбцом типа BIGINT, INT128 или NUMERIC(18, x)/NUMERIC(38, x) — масштаб определяется максимальным из масштабов аргументов.

Правила:

Непосредственное указание GENERATE_SERIES в качестве столбца в SELECT запрещено: запрос SELECT GENERATE_SERIES FROM GENERATE_SERIES(1, 3) AS S вызовет ошибку «столбец GENERATE_SERIES не существует». При этом SELECT * FROM GENERATE_SERIES(1, 3) AS S отработает, и столбец будет называться GENERATE_SERIES.

Функция появилась в Firebird 6.0 — версия находится в разработке, доступна в снапшот-сборках.

Пример

SELECT n
FROM GENERATE_SERIES(1, 3) AS S(n);
-- 1, 2, 3

SELECT n
FROM GENERATE_SERIES(3, 1, -1) AS S(n);
-- 3, 2, 1

-- Разбиение часа на минутные интервалы
SELECT
    DATEADD(n MINUTE TO timestamp '2025-01-01 12:00') AS start_time,
    DATEADD(n MINUTE TO timestamp '2025-01-01 12:00:59.9999') AS finish_time
FROM GENERATE_SERIES(0, 59) AS S(n);

См. также

Встроенные функции по группам, Типы данных

Источник

Руководство по языку SQL СУБД Firebird 6.0 (sim1984 / ibase.ru, Public Documentation License)

Обсуждение