从sysdate中减去给定日期以获取天数

时间:2013-05-15 18:25:41

标签: oracle plsql

我正在尝试做这样的事情

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

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

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

2 个答案:

答案 0 :(得分: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;

答案 1 :(得分: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;