如何查找最近的日期

Rob*_*son 4 c# mysql sql-server lambda entity-framework-6

我有三个精度的图表。

每小时、每 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();
Run Code Online (Sandbox Code Playgroud)

但它仅适用于每小时精度。

感谢帮助!

Ste*_*ord 5

怎么样,要获得最接近特定间隔的时间:

var fromTime = new DateTime(2016, 05, 20, 9, 0, 0);
var report = _reportRepository
             .OrderBy(m =>m.CreatedDate > fromTime 
                             ? m.CreatedDate - fromTime 
                             : fromTime - m.CreatedDate)
             .Take(1);
Run Code Online (Sandbox Code Playgroud)