【发布时间】:2016-09-17 13:08:01
【问题描述】:
我有三个精度的图表。
每小时, 每 30 分钟, 每 15 分钟。
我的数据表如下所示:
当我生成图表时,我从特殊日期时间开始,例如从当前日期时间开始
例如。当我从 18:00 开始时,我的精度是每 15 分钟,我需要这个时间的数据
- 18:00
- 17:45
- 17:30
- 17:15
- 17:00
- ...
在我的数据表中,我每 3 分钟有最大数据,所以当我想从 17:15 获取数据时,我的 lambda 查询返回 null,因为我只有 17:13 和 17:16 的数据。
所以我需要查询返回最接近我的数据时间的数据。在上面的例子中,它需要从 17:16 返回数据。
我尝试了 DiffHours 方法,但它不适用于 MySQL。我需要在 MySQL 和 MSSQL 上工作的方法
我目前的方法是这样的:
var report = _reportRepository.FindBy(a => a.Fridge.FridgeIdentity == fridgeIdentity && a.CreatedDate.Year == fromTime.Year && a.CreatedDate.Month == fromTime.Month && a.CreatedDate.Day == fromTime.Day && a.CreatedDate.Hour == fromTime.Hour).FirstOrDefault();
但它仅适用于每小时精度。
感谢您的帮助!
【问题讨论】:
-
你有一个time table 可以加入和聚合吗?
-
您需要能够从随机时间开始还是总是 15 分钟的倍数?例如。您的开始时间可以是 18:03:45(然后您需要最接近 18:18:45 的时间,依此类推),还是您总是从整数值开始(18:00 或 18:15、18 :30, ...?)
-
dastination-data - 我不知道它如何解决我的问题,你能给我写个例子吗?
-
Solarflare - 我总是从整数开始。
-
第二个问题:你的工作报告代码只会在你整整一小时后给你时间,所以如果你有 17:59 和 18:03,它会给你 18:03 到 18: 00.你说你的报告在整个小时内都能正常工作。是这样吗,你不想包括过去的时间吗?这样会轻松很多!
标签: c# mysql sql-server lambda entity-framework-6