0

我正在尝试做这样的事情

 v_target_date := trunc (sysdate) - trunc (TO_DATE (iv_target_date, 'DD-MM-YYYY HH:MI AM'));

但我没有得到我想要的东西?我想看看当前 sysdate 和给定日期的天数有什么区别?所以如果它超过一个月,我应该得到 30 多天等等......

我想根据从给定日期和 sysdate 过去的天数应用逻辑。如果超过 48 小时(2 天),我可以应用逻辑 1,否则应用逻辑 2

4

2 回答 2

0

48 小时只是 2 天,所以一个简单的替代方案是:

IF TO_DATE (iv_target_date, 'DD-MM-YYYY HH:MI AM') < SYSDATE - 2 THEN
  -- logic 1
ELSE
  -- logic 2
END IF;
于 2013-05-16T05:11:50.040 回答
0

如果您只想截断 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;
于 2013-05-15T18:43:28.500 回答