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

本文关键字:Server SQL 比较 MVC DateTime ASP NET | 更新日期: 2023-09-27 18:34:09

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

我想退回今天发送的所有表格提交。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 模型只是特定页面的视图模型,并不直接映射到数据库("ContactEmail"确实如此(。

让我保持

强类型观点和模型的最佳前进方式是什么?

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

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

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))