В PostgreSQL можно получить арифметическую последовательность чисел (или дат) при помощи следующей функции:
generate_series(start, stop)
generate_series(start, stop, step)
generate_series(start, stop, step interval)
Пример 1, простая последовательность:
SELECT * FROM generate_series(2,4);
generate_series
-----------------
2
3
4
(3 rows)
Пример 2, последовательность с отрицательным шагом:
SELECT * FROM generate_series(5,1,-2);
generate_series
-----------------
5
3
1
(3 rows)
Пример 3, даты:
SELECT * FROM generate_series('2008-03-01 00:00'::timestamp,
'2008-03-04 12:00', '10 hours');
generate_series
---------------------
2008-03-01 00:00:00
2008-03-01 10:00:00
2008-03-01 20:00:00
2008-03-02 06:00:00
2008-03-02 16:00:00
2008-03-03 02:00:00
2008-03-03 12:00:00
2008-03-03 22:00:00
2008-03-04 08:00:00
(9 rows)