使用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)