select FTEMP,FPRECP,FWS10,FWD10,FRH,FVAPOR from 表名 where (FSTATIONNUM='odr.GetOracleString(0).ToString()' and  (FOBSTIME = to_date('strdate','yyyy-mm-dd hh24:mi:ss')))
提示错误:ORA-01841: (完整) 年份值必须介于 -4713 和 9999 之间, 且不为 0
换成下面这样就可以
select FTEMP,FPRECP,FWS10,FWD10,FRH,FVAPOR from 表名 where (FSTATIONNUM='11111' and FOBSTIME =to_date('2016-11-29 11:00:00','yyyy-mm-dd hh24:mi:ss'))
 为什么我用变量就不行?
而且变量我加单引号就提示:ORA-01841: (完整) 年份值必须介于 -4713 和 9999 之间, 且不为 0
不加单引号就提示:标识符无效

解决方案 »

  1.   

    按你这种把变量名直接拼接到sql中,他会认为这是你要运算(或比较)的值。建议使用绑定变量的形式!
      

  2.   

    String sql = String.Format("select FTEMP,FPRECP,FWS10,FWD10,FRH,FVAPOR from 表名" +
                               " where (FSTATIONNUM='{0}'" +
                               " and  (FOBSTIME = to_date('{1}','yyyy-mm-dd hh24:mi:ss')))",
                               odr.GetOracleString(0).ToString(),
                               strdate); 
      

  3.   

    odr.GetOracleString(0).ToString() 这样的变量是c#里面的,oracle的sql不认识。
    加单引号后,属于常量,不是有效的时间格式
    采用2楼的方法就可以啦