【问题标题】:Compare Date values in Entity Framework比较实体框架中的日期值
【发布时间】:2012-09-12 19:26:15
【问题描述】:

我正在尝试比较实体框架中的日期值。

DateTime selectedDate = Calendar1.SelectedDate;      
var result = context.EventsTable.Where(ev =>ev.EventDate.Equals(selectedDate));

ev.EventDate 来自 SQL Server 2008,selectedDate 是 ASP:Calendar 的选定日期。 在 SQL Server 2008 中,日期存储为:2012-09-03 00:00:00 而日历的 SelectedDate 中的日期值是 2012-09-03 12:00:00AM 格式。

【问题讨论】:

  • 日期是日期。显示格式与存储或计算无关。你的代码有效吗?
  • 我的代码正在运行,但比较失败,尽管日期相同。
  • 这可能意味着它们相差几毫秒,或者存在隐藏的时区问题。
  • 如果您在 SQL Server 中使用 datetime 作为类型,则可能是舍入/精度问题:stackoverflow.com/a/11620980/270591 请注意,SQL Server 中的 datetime 不如 .NET 中的 DateTime 精确。 SQL Server 中的datetime2 更适合从 .NET 中的DateTime 映射。

标签: asp.net linq entity-framework date comparison


【解决方案1】:

你可能应该截断EventDate:

context.EventsTable
    .Where(ev => EntityFunctions.TruncateTime(ev.EventDate) == selectedDate)

假设selectedDate 也被截断(DateTime.Date)。

【讨论】:

    猜你喜欢
    • 2021-10-24
    • 2017-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-07
    • 1970-01-01
    • 2018-05-14
    • 1970-01-01
    相关资源
    最近更新 更多