【发布时间】:2015-03-03 08:47:17
【问题描述】:
我想做一个 sql 语句,在一个表中计算 2 个日期值的减法。如果值为负,我只想将其显示为 0 值。
数值是支付处于当前状态的秒数。 我用技巧将它转换为时间值(日期类型)。
我当前的代码是
SELECT
max(CASE WHEN t1.time_event < SYSDATE and t2.time_event > SYSDATE THEN to_char(to_date(max(round(SYSDATE - t1.time_event) * 24 * 60 * 60)),'ssssss'),'hh24:mi:ss') else to_char(to_date(0)) END) as "current_age"
from tbl_dummyfeed t1 join tbl_dummyfeed t2 on t1.payment_Id = t2.payment_id
where t1.event = 'accepted' and t2.event = 'enriched');
【问题讨论】:
-
添加了基于
sysdate和to_char()用法的oracle标签 -
MAX 是一个聚合函数,即只返回一行(只要没有 GROUP BY。)那么为什么是 DISTINCT?
-
好的,我删除了 distinct,但我认为这不是商业案例。
-
你的“丰富”时间真的在未来,而不仅仅是“接受”时间之后吗?您真的是要从当前的不中减去接受的时间,而不是匹配的丰富时间吗?这个计算什么时候可以是负数?
-
是的,因为我想知道此时有多少付款处于特定状态。所以下一个状态永远是未来。