当前位置:编程学习 > C#/ASP.NET >>

关于ORA-01861: literal does not match format string

.Net执行SQL时报的错误,我的查询SQL时间条件是:"时间 >= '2010-5-1' and 时间 <= sysdate",环境变量NLS_DATE_FORMAT都配好了,变量值为YYYY-MM-DD HH24:MI:SS。本机调试执行没问题,Toad和PL/SQL执行也都没问题,但是部署到IIS上执行就报错:ORA-01861: literal does not match format string,条件改成"时间 >= to_date('2010-5-1','YYYY-MM-DD') "就没事。为什么本机调试没问题,部署到IIS就会报错(部署也在我本机)?
顺便问下"时间 >= to_date('2010-5-1','YYYY-MM-DD')"这样查破坏了时间索引吗,不是只要左边查询字段(时间)不加函数处理就不会影响索引吗?那为什么速度差别这么大?不加to_date()查询只要2,3秒,但是加上后就70,80秒的样子 --------------------编程问答-------------------- 好像日期的都要调用to_date()函数进行转换 --------------------编程问答-------------------- 时间 >= to_date('2010-5-1','YYYY-MM-DD')

这样不破坏索引,但是对于每行数据都有转换。不要以为to_date只做1次。

建议:sql中使用sqlParameter,使之传进来的就是date类型而不是string类型(varchar)。

例:

"select * from t where 时间 >= :时间"

另外,用between ... and 效率要比 >= <= 高。
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,