postgresql初心者です。
サイトなどを調べながら試行錯誤しましたが解決の糸口が見えませんでしたのでご教示いただけますと幸いです。
現在やりたい事
現在の時刻からtimeを引いた時間を出力する関数Aを作成(test())
一秒待機した後、現在の時刻からtimeを引いた時間を出力する関数Bを作成(test2())
select test1() - test2();
関数Aから関数Bを引く事で
1秒間の(現在の時刻からtimeを引いた時間) の変動を確認したいと考えております。
実際にはtimeの値は変動しますが関数テスト用に固定している状態です。
テーブルZIKOKU
ID | time |
---|---|
1 | 2022-05-26 12:00:00 |
関数A() CREATE OR REPLACE Function test() RETURNS interval AS $$ DECLARE duration interval; BEGIN select (current_timestamp - time) into duration FROM ZIKOKU; RETURN duration; END; $$ LANGUAGE plpgsql;
関数B() CREATE OR REPLACE Function test() RETURNS interval AS $$ DECLARE duration interval; BEGIN PERFORM pg_sleep(1); select (current_timestamp - time) into duration FROM ZIKOKU; RETURN duration; END; $$ LANGUAGE plpgsql;
select test1() - test2();
上記のselect文の出力結果が自分の想定ですと
-00:00:01(一秒待機した分、test2()の方が現在の時刻が1大きくなる為)想定なのですが
結果として00:00:00 が返ってきてしまいます。
select test1() - test2();
上記を実行した際1秒ほど待機時間が発生しているようなので
test2() の PERFORM pg_sleep(1);
は動作しているはずなのですが...
関数から関数を引くのが問題なのでしょうか?
原因などわかる方はいらっしゃいますでしょうか?
説明不足な点もあると思いますので疑問点などありましたらご指摘頂けますと幸いです。
回答1件
あなたの回答
tips
プレビュー