我向实现一个日期型字段的模糊查询,写的部分代码如下:
if (FieldType1 == "DATE")
  {
                conditionValue1 ="'%" + textBox1.Text.Trim() + "%'";
  }
 swhere = "where " + FieldName1 + " " + comparel1 + " " + conditionValue1 + " ";
这里的FieldName1 选为InputDateTime,comparel1为like Sql = "select ProductID as 产品图号,PlaneType as 所属机型,InputUserID as 录入者,InputDateTime as 录入时间,tubeNo as 导管编号 from SampleTubes "
+ swhere;我在前台界面上输入2008-6-10或者2008年6月10日,执行查询显示没有结果(可是数据库中明明有这个数据的)
请大家快帮忙想想,谢谢!

解决方案 »

  1.   

    解决方法:
    方法1、改变数据库结构,在日期不要求精确到时分时,将日期字段类型修改为Char(8),便于以后的数据查找
    方法2、将日期字段使用To_char()函数转换,但这会影响查询速度
      

  2.   

    1楼:
    我把代码改为:
     conditionValue1 =To_char(" & textBox1.Text&","yyyy-mm-dd");
    执行后出现错误:上下文中不存在 To_char,这是在怎么回事,是不是要在上面引用什么类还是?
    不明白,请大家快来帮忙呀!
      

  3.   

    to_char(rec.WHENCREATE,'yyyymmddhh24miss)
      

  4.   

    我的经验是,如果没有使用 DateTimeChooser 等类似控件来获取时间的话,应该用3个DropDownList来让用户啊输入时间,分别为ddlYear,ddlMonth,ddlDay。
    然后查询数据库的时候用DateTime类型,例如:DateTime dDate = new DateTime(ddlYear.SelectedValue, ddlMonth.SelectedValue, ddlDay.SelectedValue);conditionValue1 = "'" + dDate.Tostring().Trim() + "'";这样应该就可以了。
      
    *****************************************************************************
    http://www.wbxonline.net/blog/
      

  5.   

    假设:数据库的日期时间的字段名是 C_DATE
    C_DATE
    ------------
    2009-5-3 13:25:53 
    2009-5-4 13:28:53
    2009-5-5 13:25:53
    --------
    需要查询条件中查找 2009-5-4日录入的where to_char(C_Date,'yyyyMMdd')='20090504';
      

  6.   

    楼上各位:我试过用to_char来转化,也试过用to_char(rec.WHENCREATE,'yyyymmddhh24miss)这个方法,可是运行时出现错误说上下文中没有to_char,我用C#语言开发,后台数据库用的oracle817,是不是自己要定义一个函数呀,请大家快帮忙想想,急死了,整了好几天了!谢谢了
      

  7.   

    Date类型有Date类型的用法...不要转换成字符串用Like,效率低也没必要...也不要拼SQL字符串,应该传递参数...用>、<等比较运算符或BETWEEN语句...
      

  8.   

    to_char是Oracle函数...只能在SQL语句中执行...
      

  9.   

    vrhero:
           你好,麻烦说的再具体些好吗?谢谢了
      

  10.   

    so:
     string sql = "Select id From SecUser Where CreateDateTime = to_date(" + "'" + DateTime.Now.Date.ToString() + "','yyyy-mm-dd hh24:mi:ss')";
      

  11.   

    oracle是这样的,如果你的数据类型是date类型的话,可以这么做。
    select * from tb_1 t where t.InfoDate >= to_date('?','YYYY-MM-DD') and t.InfoDate <= to_date('?','YYYY-MM-DD')上面的问号是这样的,第一个问号是起始日期,后面一个问号是结束日期。目的是查询两个日期间的记录当然如果输出的话,我可以告诉你在DataTable中,InfoDate列式DateTime类型。"?"是什么?很简单,你可以通过oledb的parameters提交开始日期和结束日期。两个日期的顺序不要搞错。先绑定开始,后绑定结束。
    如果你是两个DateTime参数的话,可以这么写。
    Date1.toString("yyyy-mm-dd"); //输出的就是一个标准的yyyy-mm-dd格式作为参数传递给上面的sql中。另外一个日期一样处理。