如何使用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()
要求一个值列表中的最小值,这正好等于这个值。