我想执行以下简单的查询:
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之间没有运营商。
如何将时间间隔转换为时间戳?
发布于 2013-10-04 17:29:12
不可能的转换不是问题,而是评价顺序的问题。在不改变参数顺序的情况下,您可以用括号编写它:
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'https://stackoverflow.com/questions/19183916
复制相似问题