【问题标题】:Getting data between certain time intervals [closed]在特定时间间隔之间获取数据[关闭]
【发布时间】:2013-06-19 15:49:48
【问题描述】:

假设一个事件发生在 11 点。我希望能够仅显示该事件是在事件开始前 1 小时到事件结束之间。感谢您的帮助。

 from x in _context.Events
 join a in _context.Addresses on x.EventAddressID equals a.ID
 let aboutToStart = x.EventStartTime.AddHours(-1)
 let currentTime = DateTime.Now
 where x.EventStartTime >= aboutToStart && x.EventEndtime >= currentTime

【问题讨论】:

  • 那么你的问题是什么?你的查询有效吗?如果不是,它对一些样本输入有什么作用,它应该返回什么?它没有编译,还是出错了,还是什么?
  • 查询需要多小心?例如,您是否必须考虑夏令时?您可能需要在添加/减去时间之前转换为 UTC
  • 对不起,我没有提供,但不,它不会返回正确的信息。我认为我的 where 子句已关闭

标签: c# linq entity-framework


【解决方案1】:

您不能使用.AddHours(-1) 调用在服务器上创建新的DateTime 对象。相反,您应该使用EntityFunctions.AddHours 方法来计算服务器上的日期时间:

 var currentTime = DateTime.Now;
 var query = from x in _context.Events
             join a in _context.Addresses on x.EventAddressID equals a.ID
             let aboutToStart = EntityFunctions.AddHours(x.EventStartTime, -1)
             where x.EventStartTime >= aboutToStart && 
                   x.EventEndtime >= currentTime;

【讨论】:

  • 没用过这个,能不能也举个例子,我的子句能得到我需要的结果吗?
  • @user516883 当然,更新了示例
  • @user516883 这解决了您的问题吗?
猜你喜欢
  • 1970-01-01
  • 2012-12-04
  • 1970-01-01
  • 2012-10-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-21
  • 1970-01-01
相关资源
最近更新 更多