Oracle比较两个日期

时间:2013-03-04 15:48:10

标签: oracle function plsql

我有oracle查询我想比较它工作的两个日期但是当我把它放在oracle函数中并传递一个日期作为参数我得到这个错误:

ORA-01843: not a valid month
ORA-06512: at line 8
Process exited.

这是我的功能:

Create or Replace 
FUNCTION GET_MAX_VALUE 
(
  PLAN_DATE IN DATE  
, LOC IN NUMBER  
, RES IN NUMBER  
, TIS IN NUMBER  
) RETURN NUMBER AS 
units number;
return_val number;
BEGIN
  select ts.booked_units into units from tsm_transaction_tbl ts
  where ts.location_id=loc and ts.resource_id=res and ts.ts_id=tis and ts.trans_date=to_date(plan_date,'mm/dd/yyyy');

  RETURN units;
END GET_MAX_VALUE;

1 个答案:

答案 0 :(得分:2)

删除to_date变量周围的plan_date函数。

您已将plan_date作为DATE类型变量传递。无需使用to_date函数将其转换为日期。

说到to_date函数,它用于根据我们想要的格式将字符串(varchar2类型)转换为date类型。您可以在Oracle网站here上阅读有关to_date功能的更多信息。

您的代码如下:

Create or Replace 
FUNCTION GET_MAX_VALUE 
(
  PLAN_DATE IN DATE  
, LOC IN NUMBER  
, RES IN NUMBER  
, TIS IN NUMBER  
) RETURN NUMBER AS 
units number;
return_val number;
BEGIN
  select ts.booked_units into units from tsm_transaction_tbl ts
  where ts.location_id=loc
  and ts.resource_id=res
  and ts.ts_id=tis
  and ts.trans_date = plan_date;

  RETURN units;
END GET_MAX_VALUE;