PLS-00221 'to_date' 不是过程或未定义错误和转换日期由句点分隔

PLS-00221 'to_date' is not a procedure or undefined error and converting dates separated by period

我想将 varchar2 类型的 IN 参数转换为日期,以便我可以从数据库中提取两个输入日期之间的数据。我有一个问题和一个问题。

问题是我遇到了错误

"PLS-00221: to_date is not a procedure or undefined"

当我有以下代码时:

create or replace procedure display_users(          pi_date1       in varchar2,
                                                    pi_date2       in varchar2,
                                                    po_userc       out sys_refcursor) is

begin

  if pi_date1 is not null then
    to_date(pi_date1, 'DD/MM/YYYY HH24:MI:SS');
  end if;

  begin
    open po_userc for
      select ... 
        from ...
       where ...
         and ...
         and t.inserted_date betweeen pi_date1 and pi_date2 ;
  end;

end;

我对 pl/sql 程序不是很熟悉,我尝试了很多其他方法让它工作,但我做不到。

问题是在数据库中我的日期是这样的:'16.08.2018 10:30:48'(我无法更改数据库中的数据格式)

日期部分以句点 (.) 分隔。 to_date(pi_date1, 'DD/MM/YYYY HH24:MI:SS'); 可以工作吗,因为日期由“/”分隔?

如错误消息所述,to_date 不是程序。 to_date 是一个函数,函数总是 returns 一个值。您必须将此值分配给变量。

declare
  v_date  date;
begin
  v_date := to_date(pi_date1, 'DD/MM/YYYY HH24:MI:SS');
end;
/

转换为日期时需要注意格式。日、月和年、时、分和秒之间是否有分隔符?如果它是一个点 (.) 那么你必须将它指定为一个格式。

如果您的字符串如下所示:01.01.2000 01:01:01 那么您的格式必须如下所示:'DD.MM.YYYY HH24:MI:SS'

如果您的字符串如下所示:01/01/2000 01:01:01 那么您的格式必须如下所示:'DD/MM/YYYY HH24:MI:SS'