没有相关代码只能猜想,
首先你的参数我猜想传进去之前应该是字符串类型
传入到nvl(date1,?)时,nvl,默认两个参数的类型一致,会把你的参数根据date1的类型自动转化为日期
而传入 ?-date2 时,不会进行这种强制转化,
具体是不是这样需要看你前后相关代码

解决方案 »

  1.   

    你的这个?是日期类型吗?须保证类型一致
    某些语言中,写oracle语句时,?可以直接当参数使用,在后面传参时,再把?替换成参数的值,然后到数据库中执行
      

  2.   

                             Timestamp ts1;
     ts1.fromText(strDate,"yyyy-mm-dd hh:mi:ssxff","",env);//格式化时间为对应的string。string
    类型的时间不能直接存入到数据库中,必须进行相应的转换。转换例子可以借鉴一下。fromtext是一个函数。
                             如果直接插入到数据库中,可以用to_data     或者 to_timestamp 。
      

  3.   

    传入到nvl(date1,?)的值不是date类型的吧