仅选择特定时间前后的记录
本文关键字:记录 定时间 选择 | 更新日期: 2023-09-27 18:34:23
在我的数据库中,每分钟都有一条记录。我只想选择大约每 15 分钟创建的每条记录。
以下代码显示了我当前如何执行此查询,但使用以下语句:v.CreateTime > v.CreateTime < endDate)
,我只声明我想获取数据的日期之间。
我想要:15, :30, :45, :00
时间的数据.此外,在那些时间没有精确输入的数据。例如,12:15:23
是可能的,但12:14.43
也是可能的。
vafDataList = service.LoadVesselRecord<VafData>(v =>
v.TypeNo == RecordObjectTypes.VafData &&
v.Vessel_No == vesselNo &&
v.CreateTime > startDate &&
v.CreateTime < endDate)
.OrderBy(t => t.CreateTime)
.ToList();
如何仅选择大约四分之一小时的记录,而不是所有记录?
您只需选择这些分钟的记录:
.Where(t => new int[] { 0, 15, 30, 45 }.Contains(t.CreateTime.Minute))
但是,假设您的LoadVesselRecord()
调用在DbSet
上执行的Where()
,则实体框架无法将其转换为查询,因此您必须使用 SqlFunctions
扩展让实体框架将其转换为 DATEPART
SQL 语句:
.Where(t => new int[] { 0, 15, 30, 45 }
.Contains(SqlFunctions.DatePart("minute", t.CreateTime)))