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

SAIMI Kohei (斎見 浩平) saimi @ oliver.co.jp
2003年 5月 9日 (金) 23:57:46 JST


> 2003/01/01〜2003/05/10
> などの範囲の日付を全て取得するSQLはありますでしょうか?

1. まず、こんなテーブルを作っときます。

CREATE TABLE _0_to_9 ( n integer PRIMARY KEY );
INSERT INTO _0_to_9 VALUES (0);
INSERT INTO _0_to_9 VALUES (1);
...
INSERT INTO _0_to_9 VALUES (9);

2. 次に、こんなビューを作ります。

CREATE VIEW _0_to_999 AS
  SELECT t0.n + t1.n*10 + t2.n*100 AS n
  FROM _0_to_9 t2, _0_to_9 t1, _0_to_9 t0;
  
SELECT n FROM _0_to_999 ORDER BY n;
  n  
-----
   0
   1
...
 999
(1000 rows)

3. で、例えば、2003/01/01〜2003/05/10が欲しいとき、

SELECT '2003/01/01'::date + n as dates from _0_to_999
WHERE '2003/01/01'::date + n <= '2003/05/10'::date
ORDER BY n;

とやると、

   dates
------------
 2003-01-01
 2003-01-02
 ...
 2003-05-10
(130 rows)

と出力されるはずです。


-- 
SAIMI Kohei (斎見 浩平) <saimi @ oliver.co.jp>




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