DateTime.Today在MVC中

时间:2014-05-27 13:24:13

标签: asp.net-mvc asp.net-mvc-4 razor

我正在尝试返回一个显示当天日志的视图。

这个SQL查询完全符合我的需要:

select * from Logs where Date>=GETDATE()-1

但是我在使用剃刀语法时遇到了麻烦,无法在我的视图中编写此语句。

return View(db.Logs.Where(a => a.Date >= DateTime.Today()-1)); 

知道如何在视图中显示当前日期的日志吗?

2 个答案:

答案 0 :(得分:3)

它是:

return View(db.Logs.Where(a => a.Date == DateTime.Today)); 

或者,如果你想减去一天:

return View(db.Logs.Where(a => a.Date >= DateTime.Today.AddDays(-1))); 

请注意,DateTime是一个结构,而NowTodayDate是属性,而不是方法,所以你不能像方法一样调用它们(DateTime.Today()) 。 它们被称为就像任何其他属性一样,没有副词。

参考:http://msdn.microsoft.com/en-us/library/system.datetime.aspx

Off-Topic:

  

我尝试了这个,但它没有用。

这是一个糟糕的措辞。人们倾向于对此过敏,因为它没有说明,什么是错误的。你是否得到了意想不到的结果,异常,编译器警告等等。在你的情况下,它很简单,因为你正在处理一些语法错误,但在更复杂的情况下,这将不会很顺利。

答案 1 :(得分:1)

如果您尝试从当天获取日志,则表示从当天午夜到现在或过去24小时。

使用GETDATE()的SQL中的原始查询与DateTime.Now相同,而不是DateTime.Today

正如Serv提到的那样,你得到的结果究竟是什么?我建议你复制你在sql查询中看到的内容:

return View(db.Logs.Where(a => a.Date >= DateTime.Now.AddDays(-1))); 

如果您希望它显示自午夜以来的当前日期,请使用:

return View(db.Logs.Where(a => a.Date >= DateTime.Today));

但是我还可以提出一个额外的建议,不要将您的实体对象直接返回到视图,将它们映射到视图模型对象,然后使用 ONLY 将其发送到您的视图您需要从实体获得的数据(即使它包含所有字段)