繁体   English   中英

将DateTime与ASP.NET MVC和SQL Server进行比较

[英]Comparing DateTime with ASP.NET MVC and SQL Server

我正在尝试创建一个强类型模型和视图。 这部分代码应该返回以联系我们形式发送的“电子邮件”列表。

我想返回今天发送的所有表单提交。 SQL Server 2008数据类型是datetime 所以我的模型中有一个DateTime字段。

public ActionResult ResultTable()
{
    CombinedReport report = new CombinedReport();

    report.emails = report.db.ContactEmails.Where(w => w.FormInserted.Equals(DateTime.Today)).ToList();
    return PartialView(report);
}

当我为本地内置的SQL Server CE配置运行时,它工作正常。

当我为运行SQL Server 2008的实际数据库设置它时,它不起作用。

通过一些反复试验,并查看程序其他部分的代码,我注意到DateTime的C#实现包括作为日期的一部分的12:00:00AM ,当它与SQL进行比较时,它正在发送确切的时间。

它不会让我将DateTime与字符串进行比较,因此我甚至无法将“今天”格式化为字符串。

我在这里实例化的CombinedReport模型只是特定页面的视图模型,并不直接映射到数据库(“ContactEmails”确实)。

什么是前进的最佳方式,让我保持强烈的视图和模型?

如果您只想比较值的日期部分,则应该明确说明:

DateTime today = DateTime.Today;
report.emails = report.db.ContactEmails
                         .Where(w => w.FormInserted.Date == today)
                         .ToList();

现在,您使用的LINQ的味道是否支持Date属性是另一回事 - 但这就是我试图开始的。

如果您使用的是EF,请使用EntityFunctions.TruncateTime方法:

.Where(w => EntityFunctions.TruncateTime(w.FormInserted).Equals(DateTime.Today))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM