与Npgsql EF Core的日期比较

问题描述

我试图使用简单的等式在Postgresql表中查找Date类型的列中的记录。我正在使用DateTime属性(不是noda)

我确信我缺少一些非常基本的东西,因为尝试了许多不同的方法后我没有成功。

即使日期等于数据库中的日期,以下代码也不会返回任何结果:

var m = new Model {
   dateprop = default(DateTime)
}
var result = await context.Model
   .Where(a => a.dateprop == m.dateprop)
   .ToListAsync()

数据库中,该列中有很多记录,其日期为0001-01-01。

此外,我尝试过:

  • .Where(a => a.dateprop == m.dateprop.Date)
  • .Where(a => a.dateprop.Date == m.dateprop.Date)
  • .Where(a => a.dateprop.Date == m.dateprop)
  • .Where(a => a.dateprop.Equals(m.dateprop))和以上所有品种

然后,如果我得到EF为.Where(a => a.dateprop.Date == m.dateprop.Date)生成查询并从sql客户端运行它,它将工作并返回所有记录。

在where子句中定义日期相等条件的正确方法是什么?

修改 抱歉,我已经编辑了这个问题,很抱歉。最初,代码显示为:

var m = new Model {
       dateprop = DateTime.Parse("1970-01-01")
    }
    var result = await context.Model
       .Where(a => a.dateprop == m.dateprop)
       .ToListAsync()

解决方法

以下可运行代码示例有效。我会仔细检查数据库,以查看其中到底有什么内容,以及它是否与filename.createNewFile(); String cmd = "logcat -d -t '08-14 11:58:20.211' -v time -f" + filename.getAbsolutePath() + " | grep " + PsLog.LOG_PREFIX; Runtime.getRuntime().exec(cmd); 相对应。如果您仍然确信存在问题,请尝试调整以下代码以使其显示。

default(DateTime)