我用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"); //这句报错麻烦各位给我解答一下!
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"); //这句报错麻烦各位给我解答一下!
TO_DATE ('2002-08-26', 'YYYY-mm-dd', 'NLS_DATE_LANGUAGE = American') 我这里不能调试,所以你自己再看看!~
把你加在中文字两边的双引号去掉
用“'yyyy年m月d日'”试一试。
“"SIMPLIFIED CHINESE"”中的引号,放在C#的字符串中,也会引起错误的吧?
C#中怎么在字符串中用双引号?我记不清了。手头没有环境,没法试,抱歉。
“\"”?这好像是java的。
“@"字符串"”?好像这样行的
加入NLS_DATE_FORMAT 值為yyyymmdd這樣在整個oracle環境中日期格式都為yyyymmdd當然查詢出來的結果也是這樣
用相同的格式进行转换。