Plsql PLS-00221';迄今为止';不是过程或未定义的错误,转换日期以句点分隔

Plsql PLS-00221';迄今为止';不是过程或未定义的错误,转换日期以句点分隔,plsql,procedure,Plsql,Procedure,我想将varchar2类型的IN参数转换为日期,以便在两个输入日期之间从数据库中提取数据。我有一个问题和一个问题 问题是我得到了错误 “PLS-00221:截止日期不是程序或未定义” 当我有以下代码时: create or replace procedure display_users( pi_date1 in varchar2, pi_date2 i

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

问题是我得到了错误

“PLS-00221:截止日期不是程序或未定义”

当我有以下代码时:

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”(我无法更改数据库中的数据格式)


日期部分由句点(.)分隔。将<代码>更改为日期(pi日期1,'DD/MM/YYYY HH24:MI:SS')自日期起的工作时间由“/”

分隔,正如错误消息所述,
至日期
不是一个过程<代码>截止日期是一个函数,函数始终返回一个值。必须将此值指定给变量

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/yyyyy HH24:MI:SS'

正如错误消息所述,
到日期
不是一个过程<代码>截止日期是一个函数,函数始终返回一个值。必须将此值指定给变量

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/yyyyy HH24:MI:SS'

尝试此pi_date1:=to_date(pi_date1,'DD/MM/yyyyy HH24:MI:SS')@Ovox您不能为其指定日期吗varchar2@hotfix那是我的错!您的光标看起来还不太正确。插入的日期是什么类型的?为什么
date1
date2
的类型是
varchar2
?如果将
date1
转换为
date
,还应将
date2
转换为
date
inserted\u date是类型date,我被要求将date1和date2创建为varchar2。我要把他们两个都转换过来,我只是没有把它贴在这里。感谢您的帮助,两位年轻人都试用了此pi_date1:=to_date(pi_date1,'DD/MM/yyyyy HH24:MI:SS')@Ovox您不能为其指定日期吗varchar2@hotfix那是我的错!您的光标看起来还不太正确。插入的日期是什么类型的?为什么
date1
date2
的类型是
varchar2
?如果将
date1
转换为
date
,还应将
date2
转换为
date
inserted\u date是类型date,我被要求将date1和date2创建为varchar2。我要把他们两个都转换过来,我只是没有把它贴在这里。谢谢你们两位的帮助