在 EF Core 中查询日期列

Query a date column in EF Core

我需要查询现有数据库 table,其中有一列 sql 类型 datetime

EF Core 将 DateTime 属性映射到 [datetime2](7)。这在 EF Core 3.1 中无关紧要。

db.Blogs.Where( b => b.StartDate > new DateTime(2020,1,1)) 这样的查询仍然被翻译成像 WHERE StartDate > '2020-01-01T00:00:00.00'

这样的东西

我将 EF 更新到 Core 6.0,这样的查询现在会导致类似 WHERE [StartDate] > '2020-01-01T00:00:00.0000000' 的内容,它适用于 [datetime2](7) 类型的列,但不适用于 datetime[=18 类型的列=]

由于 EF(非核心)和 EF Core 使用了 table,因此该列应保留为 datetime,但我需要能够对其进行过滤。有办法吗?

如果您在查询中不需要时间信息,您可以将其删除。您可以对核心版本使用 DbFunctions.TruncateTime method for .net version and EntityFunctions.TruncateTime 方法。只需从包含时间信息的列中截断时间信息。

db.Blogs.Where( b => b.StartDate > DbFunctions.TruncateTime(yourdateTime))

应该可以。

既然问题是关于 EF Core 的,那么应该是

db.Blogs.Where( b => b.StartDate.Date  > EntityFunctions.TruncateTime(yourdateTime))