当差异为正时,获取一天之间的差异



使用Postgresql,我需要减去两个日期,并在日期之间的差值为正或0时显示结果。为了减去我使用的日期:

SELECT
EXTRACT(EPOCH FROM ('2019-02-11 17:59:01.953894'::timestamp - '2019-12-09 02:08:16.01493'::timestamp))/60

然而,我需要这样的东西:

SELECT
DECODE(SIGN(EXTRACT(EPOCH FROM ('2019-02-11 17:59:01.953894'::timestamp - '2019-12-09 02:08:16.01493'::timestamp))/60 as d),-1, None,
                                                          ,1, d) 

运行上一个查询,我在下面得到一个错误:

ERROR:  syntax error at or near "as"
LINE 2: ...mestamp - '2019-12-09 02:08:16.01493'::timestamp))/60 as df)
^

你知道如何克服这个问题吗?

非常感谢

您可以使用GREATEST将负值转换为0:

GREATEST(
EXTRACT(EPOCH FROM (ts1 - ts2))/60,
0
)

或者,如果您想要差值为负时的null结果,您可以使用case表达式来比较时间戳,然后再尝试减去它们:

CASE WHEN ts1 > ts2 THEN  EXTRACT(EPOCH FROM (ts1 - ts2))/60 END

试试这个:

SELECT greatest((EXTRACT(epoch from age('2019-02-11', now())) / 86400)::int, 0) 

最新更新