如何在实体框架中搜索日期

问题描述 投票:0回答:1

我正在尝试从数据库中获取日期,并且尝试了不同的方法,但似乎没有任何效果。

这是我在数据库中的日期

2024-04-18 19:47:36.337
,它在 Microsoft SQL Server 中定义为
datetime
;我正在使用实体框架和 C#,变量是

public DateTime InitH { get; set; }

我的查询比这更复杂,但我发现问题是日期。所以我尝试获得搜索日期的最佳解决方案

public void obtenerFechaHarcodeada()
{
    DateTime fecha = new DateTime(2024, 4, 18, 19, 47, 36);

    var registro = _dbContext.AssignmentRecords
                             .FirstOrDefault(r=> r.InitH == fecha);
}

有什么想法吗?

我试图保存相同的日期和相同的变量以在数据库中搜索,但它永远不起作用

c# sql-server linq entity-framework-6
1个回答
0
投票

将比较的双方都设置为相同的格式(在您的情况下 - 删除毫秒)

void Main()
{
    var dt = new DataTable();
    dt.Columns.AddRange(new DataColumn[] { new DataColumn("ID", typeof(int)), new DataColumn("DATETIME", typeof(DateTime))});
    dt.Rows.Add(1, "2024-04-18 19:47:36.337");
    dt.Rows.Add(2, "2024-04-18 19:47:36.222");
    dt.Rows.Add(3, "2024-04-18 19:47:38.000");
    
    DateTime fecha = new DateTime(2024, 4, 18, 19, 47, 36).Dump();

        dt.AsEnumerable().Where(w =>
        w.Field<DateTime>("DATETIME").AddMilliseconds(-w.Field<DateTime>("DATETIME").Millisecond) == fecha)
        .Select(x => new { id = x["id"], DATETIME = ((DateTime)x["DATETIME"]).ToString("yyyy-MM-dd HH:mm:ss.fff")})
        .Dump();

}

结果将是(前 2 行)。 附:我以某种方式格式化了日期时间,你可以看到毫秒

在你的代码中它会是这样的:

var registro = _dbContext.AssignmentRecord.
     .FirstOrDefault(r=> r.InitH.AddMilliseconds(-r.InitH.AddMillisecond) == fecha);
© www.soinside.com 2019 - 2024. All rights reserved.