oracle两个日期之间的区别

时间:2015-12-07 20:23:51

标签: sql oracle

我需要找到两个日期之间的天数。

这是代码:

declare
datum DATE;
sdate DATE;
shpord NUMBER;
rozdiel NUMBER;
MESSAGE VARCHAR(2000) := 'Nemozete Uvolnit VO c.';

begin
datum := TO_DATE('&OLD:NEED_DATE','DD.MM.YYYY');
sdate := TO_DATE(sysdate,'DD.MM.YYYY');

rozdiel := datum - sdate;
IF rozdiel > 5 THEN
   ERROR_SYS.Record_General('Nemozete Uvolnit VO c','');
END IF;
end;

我收到错误:

  

ORA-01858:找到了一个非数字字符,其中数字是预期的

2 个答案:

答案 0 :(得分:3)

请勿在约会时拨打to_datesysdate已经是date。如果您想从datum

中减去当天的午夜
declare
  datum DATE;
  sdate DATE;
  shpord NUMBER;
  rozdiel NUMBER;
  MESSAGE VARCHAR(2000) := 'Nemozete Uvolnit VO c.';
begin
  datum := TO_DATE('&OLD:NEED_DATE','DD.MM.YYYY');
  sdate := trunc(sysdate);

  rozdiel := datum - sdate;
  IF rozdiel > 5 THEN
     ERROR_SYS.Record_General('Nemozete Uvolnit VO c','');
  END IF;
end;

答案 1 :(得分:0)

更改此行:

sdate := TO_DATE('sysdate','DD.MM.YYYY');

为:

sdate := sysdate;

您正在尝试将STRING'sysdate'转换为日期,而不是sysdate的函数结果。

另外,请注意您的nls设置,如果您的日期格式未设置为'dd.mm.yyyy',您将收到错误。