我想执行这个简单的查询:
SELECT
pid,
MIN(interval '5 minutes' - current_timestamp - state_change)
FROM
pg_stat_activity
AND
current_timestamp - state_change <= interval '5 minutes'
GROUP BY
pid
ORDER BY
2 ASC
LIMIT 1;
但PG抱怨interval
和timestamp with time zone
之间没有运算符。
如何将我的间隔转换为时间戳?
答案 0 :(得分:3)
不可能转换不是问题,这是评估顺序的问题。在不改变参数顺序的情况下,您可以用括号写下它:
interval '5 minutes' - (current_timestamp - state_change)
它可以使用,因为支持interval
- interval
。没有括号,它不起作用,因为interval
- timestamp
将首先被评估,而且没有实现。
作为旁注,由于pid
中的pg_stat_activity
是唯一的,GROUP BY pid
和MIN
应该被取消,如:
SELECT
pid,
interval '5 minutes' - (current_timestamp - state_change)
FROM
pg_stat_activity
WHERE
current_timestamp - state_change <= interval '5 minutes'