仅搜索日期

时间:2014-06-13 20:48:22

标签: c# asp.net-mvc datetime

我的数据库中有 issutime 表格,其格式如下:

enter image description here

当我按照确切的日期和时间进行搜索时,我得到了结果。但我想要的是只用日期执行搜索。例如:2014-02-28应返回该日期的所有结果。

这是我的代码:

var date = Convert.ToDateTime(search);
return View(db.newsletter.Where(x => x.issuetime == date).ToList());

有什么想法吗?

3 个答案:

答案 0 :(得分:2)

这类似于Kosar的方法,但更简单。它还应该正确处理当天最后一秒发生的事件。

var date = Convert.ToDateTime(search).Date;
var nextDay = date.AddDays(1);
return View(db.newsletter
    .Where(x => x.issuetime >= date && x.issuetime < nextDay)
    .ToList());
Michael Dunlap的方法可以在LINQ-to-SQL中运行,但LINQ to Entities似乎无法处理它。实体框架具有TruncateTime(请参阅here,但EntityFunctions似乎已被弃用,因此我认为我不建议使用它。

答案 1 :(得分:1)

使用DateTime类的Date属性。

var date = Convert.ToDateTime(search);
return View(db.newsletter.Where(x => x.issuetime.Date == date.Date).ToList());

答案 2 :(得分:1)

当您仅使用日期搜索时,它会将日期的时间戳更改为00:00:00:000。 例如2014-02-28,它查找2014-02-28 00:00:00:000,但是你要找的是发行时间相等的所有记录,大于2014-02-28 00:00:00 :000和小于2014-02-29 00:00:00:000。 如果Michael解决方案不适合你,你可以尝试这样的事情。

var date1=DateTime.Parse(date + " " + "00:00:00 AM")
var date2=DateTime.Parse(date + " " + "11:59:59 PM")
return View(db.newsletter.Where(x => x.issuetime>= date1 && x.issuetime<= date2).ToList());