string getend = Request.QueryString["endtime"].ToString();DateTime endday = DateTime.Parse(getend);
strSql=strSql+"  (PubDate <= '"+endday+"') and ";这样数据搜索出来后,却不能将所有 2006-10-17 的数据读出来,这样的需求,要如何做处理呢 ?我的要求就是数据精确到天就可以了,要把数据 <= 2006-10-17 的数据全读出来,现在 = 的这个要求没有实现,我想肯定是因为 :2006-10-17  与 2006-10-17 20:19:48 的 问题存在,可是不知道如何解决!

解决方案 »

  1.   

    strSql=strSql+" (PubDate < '"+endday.AddDays(1).ToShortDateString()+"') and ";
      

  2.   

    两种方法1 在sql语句里面对时间字段进行格式化比如oracle
    to_date("yyyy-mm-dd",datafield) >= 2006-10-17
    2 因为上面这样查询每条记录都会有个比较和格式化的运算,不太有效率,那么可以在sql语句里面,你要确定一天在相应数据库怎么来表示,比如在sqlserver数据库你
    datafield <= 2006-10-17+1.
      

  3.   

    string currentDate=DateTime.Now.Year.ToString()+DateTime.Now.Month.ToString()+DateTime.Now.Day.ToString();
    select tname,datename(year,tdate)+datename(month,tdate)+datename(day,tdate) as mytime from demo
    这样能比较出来
      

  4.   

    直接在sql语句里面处理就行了
    strSql=strSql+"  (PubDate <= '"+endday+"') and ";
    将条件
    改成 Datediff(dd,PubDate,endday)>=0
    或者 PubDate<DATEADD(dd,1,endday))
      

  5.   

    datadiff这个函数就应该可以了吧?
      

  6.   

    http://community.csdn.net/Expert/topic/5101/5101283.xml?temp=.7514002
      

  7.   

    Convert(varchar(10),"字段名",10) > "2006-10-23"
      

  8.   

    strSql=strSql+"  (PubDate <= '"+endday.ToString("yyyy-MM-dd")+"') and ";
      

  9.   

    strSql=strSql+"  (PubDate <= '"+endday.AddDays(1).ToString("yyyy-MM-dd")+"') and ";
      

  10.   

    取第二天的0点0分0秒或者更精确的用当天的23时59分59秒
    strSql=strSql+"  (PubDate <= '"+endday.AddDays(1).AddSeconds(-1).ToString("yyyy-MM-dd")+"') and ";