请考虑以下声明:
select interval '-1 hours'
我不知道如何得到一个区间的绝对值,也就是说,如果是负数,就切换或删除符号。我唯一想到的是:
select abs(extract(epoch from interval '-1 hours'))
但我想知道是否有一种更优雅的方式(一种保留间隔类型的方式)?
最佳答案
一个CASE
表达式看起来更能说明问题。例子:
SELECT
i,
(CASE WHEN (i < INTERVAL '0') THEN (-i) ELSE i END) AS abs_i
FROM
(VALUES
(INTERVAL '-2 h'),
(INTERVAL '2 m')
) AS foo (i)
产生:
腹肌
-----------+----------
-02:00:00 | 02:00:00
00:02:00 | 00:02:00
关于postgresql - 如何获得间隔的绝对值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12004806/