oracle里Account表wastetime(消费日期)字段设为Date型,在.net中根据此条件写sql总出错,下面是两种写法:
1.string sqlStr = "SELECT * FROM ACCOUNT WHERE WASTEDATE >="+"'"+timeBegin+"' "+"AND WASTEDATE<"+"'"+timeEnd+"'";(文字与格式不匹配)
                string sqlStr = "SELECT * FROM ACCOUNT WHERE WASTEDATE >="+timeBegin+" AND WASTEDATE<"+timeEnd;(sql语句未正确结束)
timebegin和timeend是datetime型,好像.net中没有date型
请帮我分析一下,谢谢

解决方案 »

  1.   

    可转换时间字段的显示格式后再做比较
    比如: convert(char(20),timeBegin,120) 它的格式为: 2001-10-21 12:24:12
     后面的参数120 可根据你oracle里Account表wastetime(消费日期)字段Date型的形式调整为
     其它参数 你可查SQL帮助看参数所表达的格式
      

  2.   

    试试这样对不对:
    string sqlStr= "SELECT * FROM ACCOUNT WHERE WASTEDATE between to_date('" + timeBegin + "','YYYY-MM-DD HH24:MI:SS') and to_date('" + timeEnd + "','YYYY-MM-DD HH24:MI:SS')";
      

  3.   

    写成参数吧,在添加参数就可以了:
    string sqlStr = "SELECT * FROM ACCOUNT where WASTEDATE between @timeBegin and @timeEnd";
      

  4.   

    一楼 convert(char(20),timeBegin,120) 是对SQLServer的
    二楼 to_date()是对Oracle的,但是楼主说了wastetime(消费日期)字段设为Date型,所以,Oracel的日期字段是不能再用to_date()函数的
    改为to_char就可以了无论是哪一种,如果转换为字符,则一定要把格式搞成一样
      

  5.   

    还有一种是对ADO.Net的,如果大家想对DataTable再过滤,可以下载我的源码,里面注释很清楚清明了这几种数据库过滤的区别
    www.webmis.com.cn
      

  6.   

    1.string sqlStr = "SELECT * FROM ACCOUNT WHERE WASTEDATE >="+"convert(datetime,"timeBegin+") "+"AND WASTEDATE<"+"convert(datetime,"+timeEnd+")";(文字与格式不匹配)
                    string sqlStr = "SELECT * FROM ACCOUNT WHERE WASTEDATE >= convert(datetime,"+timeBegin+") AND WASTEDATE< convert(datetime,"+timeEnd+")";(sql语句未正确结束)
      

  7.   

    谢谢大家,结贴,wmt85(深山老翁)是可以的