select segment98 from ecs_item_flow eifv where to_date(eifv.segment98,'yyyy-mm-dd') BETWEEN NVL(TO_DATE (:in_date_from,'yyyy-mm-dd'), eifv.segment98) AND NVL(TO_DATE (:in_date_TO+1,'yyyy-mm-dd'),eifv.segment98);報ORA-01858: a non-numeric character was found where a numeric was expected 錯誤.在DB中segment98是varchar2型的.

解决方案 »

  1.   

    貌似eifv.segment98里数据有不匹配 'yyyy-mm-dd'.
      

  2.   

    segment98的格式是'dd-mon-yyyy',因為是在測試區,數據很亂的,
      

  3.   

    :in_date_TO  什么类型?整型?另外改成这样试试看:
    select   segment98   from   ecs_item_flow   eifv   where   to_date(eifv.segment98,'yyyy-mm-dd')  
    BETWEEN   NVL(TO_DATE   (:in_date_from,'yyyy-mm-dd'),to_date(eifv.segment98,'yyyy-mm-dd')) 
    AND  NVL(TO_DATE   (:in_date_TO+1,'yyyy-mm-dd'),to_date(eifv.segment98,'yyyy-mm-dd')); 
      

  4.   

    :in_date_TO是自己輸進去的參數  string型的
      

  5.   

    String 类型这样会抱错的:in_date_TO+1
      

  6.   

    :in_date_TO是string型,:in_date_TO+1肯定會出錯,要不試一試:   TO_DATE(:in_date_TO,'yyyy-mm-dd')+1