我正在尝试从数据库中获取日期,并且尝试了不同的方法,但似乎没有任何效果。
这是我在数据库中的日期
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);
}
有什么想法吗?
我试图保存相同的日期和相同的变量以在数据库中搜索,但它永远不起作用
将比较的双方都设置为相同的格式(在您的情况下 - 删除毫秒)
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);