Oracle 从sysdate中减去给定的日期以获得天数

Oracle 从sysdate中减去给定的日期以获得天数,oracle,plsql,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如果您只想中断48小时,我发现INTERVAL

我正试着做这样的事情

 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小时,我发现
INTERVAL
函数更具可读性。您可以这样做(我省略了截断;根据需要应用它):


48小时仅为2天,因此一个简单的替代方案是:

IF TO_DATE (iv_target_date, 'DD-MM-YYYY HH:MI AM') < SYSDATE - 2 THEN
  -- logic 1
ELSE
  -- logic 2
END IF;
IF TO_DATE(iv_target_DATE,'DD-MM-yyyyy HH:MI-AM')
减去两个
日期
类型将得到天数,因此您应该得到您想要的。你的开始日期是什么,你得到了什么,你想得到什么?你得到了什么?这个数字是不是太低了?也许你想要
trunc
结果而不是两个日期?什么类型是
v_目标日期
iv_目标日期
?它看起来像是一个字符串,因为如果它是一个
日期
,你将做一个不必要的
到日期
,如果
v_目标日期
是一个数字,那么它是一个稍微奇怪的名称…DateMinus48小时的数据类型是什么?对不起;刚才我看到你的问题了。这是一种日期类型。
dateMinus48Hours := SYSDATE - INTERVAL '2' DAY;
IF TO_DATE (iv_target_date, 'DD-MM-YYYY HH:MI AM') < SYSDATE - 2 THEN
  -- logic 1
ELSE
  -- logic 2
END IF;