我需要找到两个日期之间的天数。
这是代码:
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:找到了一个非数字字符,其中数字是预期的
答案 0 :(得分:3)
请勿在约会时拨打to_date
。 sysdate
已经是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',您将收到错误。