请考虑以下声明:

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/

10-16 11:41