Генерация таблицы / массива на лету в функции postgresql - PullRequest
1 голос
/ 17 июня 2010

Мне нужно создать функцию postgresql

CREATE FUNCTION date_ranges (_start date, end date) 
  RETURNING TABLE(day_in_range date) AS...

если я позвоню date_ranges ('2010-06-01', 2010-06-05 ') Я должен получить

2010-06-01
2010-06-02
2010-06-03
2010-06-04
2010-06-05

Есть идеи, как это сделать?

1 Ответ

5 голосов
/ 17 июня 2010

Если вы используете Postgresql 8.4:

SELECT generate_series(_start ::timestamp,_end ::timestamp,'1 day');

Пример:

postgres=# SELECT generate_series('2010-06-01'::timestamp,
postgres-# '2010-06-05'::timestamp,'1 day')::date;
 generate_series
-----------------
 2010-06-01
 2010-06-02
 2010-06-03
 2010-06-04
 2010-06-05

В старых версиях:

SELECT '2010-06-01'::date + step FROM
generate_series(0,'2010-06-05'::date - '2010-06-01'::date,1) AS t(step);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...