[pgsql-jp: 29846] Re: 日付範囲内の日付を全て取得したいです

Mashiki mashiki @ yanah.com
2003年 5月 12日 (月) 12:31:53 JST


 Mashikiです。

斎見さんのアイデアにちょっと触発されてしまいました。
7.3以降であれば

/* 連続した数字を行として返す関数 */
create or replace function enumerate(int4, int4)
   returns setof record as '
DECLARE
   rec record;
   cnt  int4;
BEGIN
   FOR cnt in $1..$2 LOOP
      select cnt into rec;
      return next rec;
   END LOOP;
   RETURN;
END;
' language 'plpgsql';

と、関数を定義しておき、

select '2003/01/01'::date + num
   from enumerate(0, 130-1) as enum(num int4);

とか

select '2003/01/01'::date + num from enumerate(0, 
   ('2003/5/10'::date-'2003/01/01'::date)::int4) as enum(num int4);

と検索することもできますね。



pgsql-jp メーリングリストの案内