string StartDateStr = StartDTPicker.Value.Date.ToString("yyyy-MM-dd");
            string EndDateStr = EndDTPicker.Value.Date.ToString("yyyy-MM-dd");
            string DH = DhEdit.Text;
            DataTable TmpDT = MainDs.Tables["POND_SHGBD"];
            DataView TmpDV = new DataView(TmpDT);
            string FliterStr = ?;
            TmpDV.RowFilter = FliterStr 
            PonddataGrid.DataSource = TmpDV.ToTable();数据库是ORACLE的,表中有一个表示日期的字段GBSJ ,为了输入方便将其类型设计为字符型(VARCHAR2),现在想通过FORM上的两个日期控件来查询
一段时间阶段内登记的数据,我用如上一段代码,请问"?"处这个FliterStr如何写,谢谢!

解决方案 »

  1.   

    string FliterStr = "[GBSJ]>=CONVERT('"+StartDateStr +"','System.DateTime') AND [GBSJ]<=CONVERT('"+EndDateStr +"','System.DateTime')";
      

  2.   

    没注意到lz说“字段GBSJ 为字符型”,所以还要再转换一下:
    string FliterStr = "CONVERT([GBSJ],'System.DateTime')>=CONVERT('"+StartDateStr +"','System.DateTime') AND CONVERT([GBSJ],'System.DateTime')<=CONVERT('"+EndDateStr +"','System.DateTime')";另外,DataView.RowFilter里面的语法跟使用哪种数据库没有什么关系~
      

  3.   

    你的字段是varchar类型,
    string FliterStr = "[GBSJ]>='"+StartDateStr +"' AND [GBSJ]<='"+EndDateStr +"'";
      

  4.   

    非常感谢各位!
    我试过“between ...”所以以为是和数据库有关,再次谢谢!