我的数据库中有datetime列,其值为2016-01-23 14:47:00
。
我希望在12:00:00到15:00:00之间获得过去2个月的结果。
我创建了datetime变量,但今天就变成了日期。
var q11 = DateTime.Parse("12:00:00 AM");
var q12 = DateTime.Parse("03:00:00 AM");
cq11 += _db.deliverys.Where(r => r.mainid == item.id &&
r.state == true &&
r.readtime >= q11 &&
r.readtime <= q12).Count();
答案 0 :(得分:1)
因此,取决于您的数据集和更大范围的解决方案;这可能是一个不太理想的解决方案,因为我不认为TimeOfDay被转换为sql。这将使用mainid和state查询将数据集拉入内存,然后使用时间和时间跨度在内存中进一步过滤。
TimeSpan start = new TimeSpan(12, 0, 0); //NOON
TimeSpan end = new TimeSpan(15, 0, 0); //3 PM
var subQuery = _db.deliverys.Where(r => r.mainid = item.id && r.state == true).ToList();
var results = subQuery.Where(q => (q.TimeOfDay > start) && (q.TimeOfDay < end));
我测试了一个内存列表,它在几个月内撤回了日期。