我正在尝试做这样的事情
v_target_date := trunc (sysdate) - trunc (TO_DATE (iv_target_date, 'DD-MM-YYYY HH:MI AM'));
但我没有得到我想要的东西?我想看看当前 sysdate 和给定日期的天数有什么区别?所以如果它超过一个月,我应该得到 30 多天等等......
我想根据从给定日期和 sysdate 过去的天数应用逻辑。如果超过 48 小时(2 天),我可以应用逻辑 1,否则应用逻辑 2
48 小时只是 2 天,所以一个简单的替代方案是:
IF TO_DATE (iv_target_date, 'DD-MM-YYYY HH:MI AM') < SYSDATE - 2 THEN
-- logic 1
ELSE
-- logic 2
END IF;
如果您只想截断 48 小时,我发现该INTERVAL
函数更具可读性。你可以这样做(我省略了截断;根据需要应用它):
dateMinus48Hours := SYSDATE - INTERVAL '48' HOUR;
IF TO_DATE(iv_target_date, 'DD-MM-YYYY HH:MI AM') < dateMinus48Hours THEN
... more than 48 hours ago
ELSE
... not more than 48 hours ago
END IF;
或者你可以使用它;你会得到相同的结果:
dateMinus48Hours := SYSDATE - INTERVAL '2' DAY;