postgres は好きだったけど、日付周りが弱すぎる気が。理解不足か
2008/04/26
|
postgresql8.3 系に 8.1 系から載せ替えたら、FATAL: unrecognized configuration parameter "redirect_stderr" とエラーを吐いて動きませんでした。マニュアルを調べてみたら、どうやら変数が変わったみたい。redirect_stderr は logging_collector へ変更らしいので、postgresql.conf を書き換えてやれば OK 。なのはわかるけど、こんなメイン設定の変数名を外国人はすぐに変えたがるので嫌い。なんで変えるかなあ。
あと、postgres で日付の足し算の「加算部分」に変数を用いる方法が全然わからなくて、三時間ぐらい苦労しました。マニュアルを見て interval が postgres では変数型扱いというのでやっと解決しました。てっきりキャスト演算子みたいなものだとばっかり思っていたので、必死に HOGEHOGETIMESTAMP + interval diffdate みたいなことをしていてエラー連発でした。
CREATE FUNCTION fnc_example_add_date( after_id INT, before_id INT) RETURNS INTEGER AS '
DECLARE
temp_rec RECORD;
div_interval interval;
BEGIN
SELECT EXTRACT( \'day\' FROM ad.LoginDate - bd.LoginDate ) as diff_day INTO temp_rec FROM ( SELECT * FROM UserLists WHERE USERID = after_id ) as ad,( SELECT * FROM UserLists WHERE USERID = before_id ) as bd;
IF temp_rec IS NOT NULL THEN
div_interval := temp_rec.diff_day * 86400;
INSERT INTO IntervalTime( Itime ) SELECT LastLoginDate + div_interval FROM LoginLog;
ELSE
RETURN 0;
END IF;
RETURN 1;
END
' LANGUAGE 'plpgsql';
内容は適当だけど、こんな感じです。
本当に内容は適当なので、こんな感じで function ないで使えますってだけ見てください。
本日の気分:postgres は好きだったけど、日付周りが弱すぎる気が。理解不足か:0 時間( 計 0 時間 )
|