如何使用postgresql将时间间隔转换为带时区的时间戳?

如何使用postgresql将时间间隔转换为带时区的时间戳?,postgresql,type-conversion,postgresql-9.2,Postgresql,Type Conversion,Postgresql 9.2,我想执行这个简单的查询: 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; 选择 pid, 最小值(间隔“

我想执行这个简单的查询:

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;
选择
pid,
最小值(间隔“5分钟”-当前时间戳-状态更改)
从…起
pg_统计活动
及

当前时间戳-状态改变不可能的转换不是问题,而是评估顺序的问题。在不更改参数顺序的情况下,可以使用括号编写:

interval '5 minutes' - (current_timestamp - state_change)
由于支持
interval
-
interval
,所以它可以工作。如果没有括号,它将不起作用,因为将首先计算
interval
-
timestamp
,而不会实现它

作为旁注,由于
pid
pg_stat_活动中是唯一的
,因此应抑制按pid
MIN
分组,如下所示:

SELECT
    pid,
    interval '5 minutes' - (current_timestamp - state_change)
FROM
    pg_stat_activity
WHERE
    current_timestamp - state_change <= interval '5 minutes'
选择
pid,
间隔“5分钟”-(当前时间戳-状态更改)
从…起
pg_统计活动
哪里

当前时间戳-状态改变不可能的转换不是问题,而是评估顺序的问题。在不更改参数顺序的情况下,可以使用括号编写:

interval '5 minutes' - (current_timestamp - state_change)
由于支持
interval
-
interval
,所以它可以工作。如果没有括号,它将不起作用,因为将首先计算
interval
-
timestamp
,而不会实现它

作为旁注,由于
pid
pg_stat_活动中是唯一的
,因此应抑制按pid
MIN
分组,如下所示:

SELECT
    pid,
    interval '5 minutes' - (current_timestamp - state_change)
FROM
    pg_stat_activity
WHERE
    current_timestamp - state_change <= interval '5 minutes'
选择
pid,
间隔“5分钟”-(当前时间戳-状态更改)
从…起
pg_统计活动
哪里

当前时间戳-状态变化很好“5分钟减去时间戳”的结果是什么?反过来说:“时间戳减去5分钟”。所以我猜你想要:
MIN(当前时间戳-状态变化-间隔'5'分钟)
那么“5分钟减去一个时间戳”的结果会是什么呢?反过来说:“时间戳减去5分钟”。所以我想你想要:
MIN(当前时间戳-状态更改-间隔'5'分钟)
我需要
MIN
,因为我在寻找最小的差异。@Alex:我的观点是每个
pid
只有一个
状态更改
,所以按pid分组并应用
MIN()
要求一个值列表中的最小值,该值正好等于此值。我需要
MIN
,因为我在寻找最小的差异。@Alex:我的观点是每个
pid
只有一个
状态变化,所以按pid分组并应用
MIN()
要求一个值列表中的最小值,这正好等于这个值。