我用winsql连到oracle数据库执行以下查询:
select * from tablename where to_date(time,'yyyy"年"mm"月"dd"日"','NLS_DATE_LANGUAGE=''SIMPLIFIED CHINESE''')>=TIMESTAMP'2006-11-30 0:00:00' and to_date(time,'yyyy"年"mm"月"dd"日"','NLS_DATE_LANGUAGE=''SIMPLIFIED CHINESE''')<TIMESTAMP'2006-11-30 1:00:00'
可以正常执行。其中tablename是表名,time是时间字段,类型为varchar2。但是我用C#采集数据时报错System.Data.OracleClient.OracleException: ORA-01861。
C#代码如下:
DataSet ds=new DataSet();
OracleCommand cmd= new OracleCommand(sql,con);
OracleDataAdapter da=new OracleDataAdapter(cmd);
da.Fill(ds,"source");   //这句报错麻烦各位给我解答一下!

解决方案 »

  1.   

    SQl中的文字与格式字符串不匹配,好像是这里的错误
    TO_DATE ('2002-08-26', 'YYYY-mm-dd', 'NLS_DATE_LANGUAGE = American') 我这里不能调试,所以你自己再看看!~
      

  2.   

    我的时间字段是这样的:2007年1月1日,所以我用to_date(time,'yyyy"年"mm"月"dd"日"','NLS_DATE_LANGUAGE=''SIMPLIFIED   CHINESE''')。
      

  3.   

    “'yyyy"年"mm"月"dd"日"'”
    把你加在中文字两边的双引号去掉
    用“'yyyy年m月d日'”试一试。
    “"SIMPLIFIED CHINESE"”中的引号,放在C#的字符串中,也会引起错误的吧?
    C#中怎么在字符串中用双引号?我记不清了。手头没有环境,没法试,抱歉。
    “\"”?这好像是java的。
    “@"字符串"”?好像这样行的
      

  4.   

    to_date(time,'yyyy"年"mm"月"dd"日"','NLS_DATE_LANGUAGE=''SIMPLIFIED   CHINESE''')在C#中'yyyy'年'mm'月'dd'日''在引號內的要轉義一下 
      

  5.   

    建議不要用這樣的日期格式,采用設定oracle的日期格式來完成 可以在注冊表下面加入鍵值 HKEY_LOCAL_MACHINE----SOFTWARE----ORACLE
    加入NLS_DATE_FORMAT   值為yyyymmdd這樣在整個oracle環境中日期格式都為yyyymmdd當然查詢出來的結果也是這樣
      

  6.   

    TO_DATE('2005-10-18', 'YYYY-MM-DD'),2800,1);
      

  7.   

    select sysdate from dual;
    用相同的格式进行转换。