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