1

以下是我在 oracle 中存储过程的前几行。我要做的就是将一个字符串传递给过程,将其转换为日期并在查询中使用它。但这似乎不起作用。目前,我被抛出的错误如下:

ORA-01830: 日期格式图片在转换整个输入字符串之前结束

ORA-06512:在“APPS.PORDUCTPLANNINGFORECAST”,第 26 行

ORA-06512: 在第 1 行

CREATE OR REPLACE PROCEDURE APPS.PorductPlanningForecast (
   vDateFrom        IN varchar2,
   vDateTo          IN varchar2 , 
   vForecastSetDPL2 IN varchar2, 
   out              SYS_REFCURSOR
)
IS 
  L_CURSOR SYS_REFCURSOR; 
  vfrom    date; 
  vto      date;
BEGIN
  vfrom:= TO_DATE(vDateFrom,'DD/MM/YYYY HH24:MI:SS');
  vto:=TO_DATE(vDateTo,'DD/MM/YYYY HH24:MI:SS');

具有的行TO_DATE()是第 26 行和第 27 行。此外,我传入的格式是通过 c# 将System.DateTimeformat( "01/08/2013 12:00:00 AM") 转换为字符串,然后通过add参数传递,因为日期转换错误而放弃将日期作为日期传递。请帮忙..

4

1 回答 1

1

如果您传入以下格式的字符串,01/08/2013 12:00:00 AM那么为了成功将该字符串转换为日期数据类型,您应该使用以下格式掩码'dd/mm/yyyy hh:mi:ss AM',其中包括子午线指标:

to_date(vDateFrom, 'dd/mm/yyyy hh:mi:ss AM')

但是我如何使它可变?它也可能是 PM

经络指标是可以互换的。对于这两个字符串01/08/2013 2:00:00 AM01/08/2013 2:00:00 PM例如,您可以将日期格式模型与子午线指标之一一起使用,无论是它AM还是PM. 这是一个例子:

select to_date('01/08/2013 2:00:00 AM', 'dd/mm/yyyy hh:mi:ss AM') as res
  from dual

结果:

Res 
-----------
01.08.2013 2:00:00 


select to_date('01/08/2013 2:00:00 PM', 'dd/mm/yyyy hh:mi:ss AM') as res
  from dual

Res 
-----------------
01.08.2013 14:00:00 
于 2013-08-30T08:12:07.520 回答