次のようなコードを含むプロシージャがあります。
processStart := current_timestamp;
-- run statement(s)
processEnd := current_timestamp;
elapsed := processEnd - processStart;
raise notice 'My Statement, elapsed time: %', elapsed;
アイデアは、ステートメントまたはステートメントのコレクションの実行にかかる時間を取得したいということです。
00:00:00
問題は、これが1 秒未満の経過時間で返されることです。私は本当にミリ秒を見たいです。これどうやってするの?
EXTRACT
andの使用に関する質問と回答がありますEPOCH
が、これは「第 2 の」レベルにあるようで、私の目的には十分な粒度ではありません。
アップデート
@twn08の回答を使用して、最終的に次の解決策にたどり着きました。
次の変数を宣言しました。
declare
processStart timestamp;
elapsed numeric(18,3);
processFinish timestamp;
次に、プロセスを開始する前に:
processStart := clock_timestamp();
プロセスが終了した後、これを実行しました:
processFinish := clock_timestamp();
elapsed := cast(extract(epoch from (processFinish - processStart)) as numeric(18,3));
raise notice 'My Statement, elapsed time: % ms', elapsed;
これはうまく機能しました。