【问题标题】:Adding a value to a 'datetime2' column caused an overflow. EF Core Date Comparison向“datetime2”列添加值导致溢出。 EF Core 日期比较
【发布时间】:2022-01-20 09:48:19
【问题描述】:

您好,有一个名为 TableOne 的实体,它的属性如下:

[Column(TypeName = "datetime2(7)")]
public DateTime ActualDeliveryDateTime { get; set; }

在选择查询中,我根据当前日期时间值检查此属性,如下所示:

 var authorisation = _db.TableOne.OrderByDescending(ar => ar.Id).FirstOrDefault(a =>
  .......
    (
       DateTime.UtcNow >= a.ActualDeliveryDateTime.AddHours(-2) &&
       DateTime.UtcNow <= a.ActualDeliveryDateTime.AddHours(4)
    ) 
.......

但是,我收到了这个错误:Adding a value to a 'datetime2' column caused an overflow。请帮忙。

【问题讨论】:

  • datetime2 列中有哪些值?
  • 此外,如果您创建所需的最早和最晚时间并将它们直接与数据库中的值进行比较,而不是对表中的每一行进行加减运算,会更安全。
  • @DavidG 2021-12-17 13:57:00.8040709

标签: datetime entity-framework-core


【解决方案1】:

我通过反转逻辑解决了这个问题。

(
    DateTime.UtcNow.AddHours(-4) <= a.ActualDeliveryDateTime &&
    DateTime.UtcNow.AddHours(2) >= a.ActualDeliveryDateTime
)

在这种情况下不需要AddHours到SQL Column,而是添加到Current日期。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-13
    • 1970-01-01
    • 2019-05-19
    • 2022-08-12
    • 1970-01-01
    相关资源
    最近更新 更多