1。 数据库是什么数据库,版本?
2。 EF版本?解决方法:
1。  try  DbFunctions.DiffDays  
2.  大招: var used1 = db.Coupons.Where(m => m.RadomNum == 4).AsEnumerable().Count(m=>System.Data.Objects.EntityFunctions.DiffDays(m.CreateTime, DateTime.Now) == 0);

解决方案 »

  1.   

    用DbFunctions.DiffDays  就可以解决了。
      

  2.   

    不太明白...我只需要计算数据库中当天的数据量就好了啊...你可以写为  m.CreateTime>=d1 && m.CreateTime<d2这种表达式。而且如果你学过 t-sql 应该知道,这种表达式可以用到数据库表的索引。通常不要使用 DateDiff,而应该使用这类表达式。另外,从 #4 楼提供的引用文章上看,那种表达式是 EF 6.0的。
      

  3.   

    SQL Server跟vb3、vb6之类的,甚至Office中的vbs,在“存储日期时间”类型数据时一样,都是使用一个浮点数表示日期时间。其中小数点以前的部分表示天,小数点以后的时部分表示凌晨以后经过的时间。因此就算是你使用 DiffDays去计算距离“2014年7月26日凌晨1点12分38秒”为0的时间,也完全可能把前一天下午的时间误认为是26日的时间。所以你这个算法就算可以执行,也是错的。
      

  4.   


    感谢版主大大...两种方法都OK...奇怪,我记得之前试过dbfunction.diffdays,结果不行..今天再试就OK了...
      

  5.   

    不太明白...我只需要计算数据库中当天的数据量就好了啊...你可以写为  m.CreateTime>=d1 && m.CreateTime<d2这种表达式。而且如果你学过 t-sql 应该知道,这种表达式可以用到数据库表的索引。通常不要使用 DateDiff,而应该使用这类表达式。另外,从 #4 楼提供的引用文章上看,那种表达式是 EF 6.0的。感谢指教..弱弱的问下...是不是在用LINQ写时间判定的时候都避免使用diffdays?