[pgsql-jp: 33201] Re: 日付の演算について
Shu Sawada
luna @ lunanet.gr.jp
2004年 6月 11日 (金) 01:45:56 JST
さわだと申します。
ちょうど関数お勉強中だったので、試しに作ってみました。
#SQLだけで出来る話だったら、ごめんなさい。
こんなテーブルを作って、
luna=> select * from test;
no | date | time | param
----+------------+----------+-------
1 | 2004-06-11 | 00:30:00 | 30
2 | 2004-06-11 | 01:00:00 | 60
3 | 2004-06-11 | 02:00:00 | 60
4 | 2004-06-10 | 00:00:00 | 45
5 | 2004-06-11 | 03:00:00 | 30
(5 rows)
こんな関数を作ってみました。
luna=> create function learn(int, int) returns setof int as '
luna'> select no from test where no = $2 and time >= (time \'now\' + interval \' $1 minutes \')'
luna-> language 'sql';
luna=> select learn(t.param, t.no) from test as t where date = 'now';
learn
-------
3
5
(2 rows)
このままだと、現在時刻+param分以降に送信時刻が設定されている行が
全て出てきてしまうので、ぴったり1行は抽出できないと思います。
確実に30分おきに実行されるとしても、数秒単位のズレが出てくると思うので、
単純に = では抽出できないような。
プログラム側で対応できれば、もっと簡単な気もします。
こういう話じゃなかったら、ごめんなさい。
もっと美しい解があっても、ごめんなさい。少しでも参考になれば。^^;
------
luna as Shu Sawada [ luna @ lunanet.gr.jp http://www.lunanet.gr.jp ]
pgsql-jp メーリングリストの案内