考虑下面的陈述:
select interval '-1 hours'
我不知道如何获得间隔的绝对值,也就是说,如果是负数,切换或删除符号.我唯一想到的是:
select abs(extract(epoch from interval '-1 hours'))
但是我想知道是否有一种更优雅的方法(一种保留区间类型的方法)?
考虑下面的陈述:
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)
它产生:
i | abs_i -----------+---------- -02:00:00 | 02:00:00 00:02:00 | 00:02:00