【问题标题】:Check if two dates completely overlaps a date range检查两个日期是否完全重叠一个日期范围
【发布时间】:2014-07-23 15:19:15
【问题描述】:

我有一个停车许可表,其中包含 datetime 字段的 validFrom 和 validTo 字段。我还有另一个名为 OvernightParkingSetting 的表,它有两个日期时间字段 NightStart 和 NightEnd。

我需要阅读从 NightStart 之前开始到 NightEnd 之后有效的所有停车许可证,这意味着它是通宵停车有效的通行证。

我正在尝试在 .NET、LINQ 中执行此操作

对逻辑或设计的任何帮助将不胜感激。

【问题讨论】:

  • 我不明白你的问题。这与validfrom 和validto 字段有什么关系?完全跨越 NightStart 和 NightEnd 是什么意思?
  • 检查这个 SO 问题 [这个 SO 问题][1] [1]:stackoverflow.com/questions/325933/…
  • 您可以将其转换为 DateTime 并使用内置比较器。
  • OvernightParkingSetting 中有多少行?

标签: sql .net linq datetime


【解决方案1】:

我不确定如何为您的项目编写整个代码,但我可以通过逻辑和 SQL 语句帮助您朝着正确的方向前进。您需要使用几个子查询从 OvernightParkingSetting 表中获取您需要的值。

从这里开始:

SELECT * FROM parkingPermitTable
WHERE validFrom < SELECT(NightStart FROM OvernightParkingSetting) 
    AND validTo > SELECT(NightEnd FROM OvernightParkingSetting)

在这里,我假设您的 OvernightParkingSetting 表只有一行。如果没有,您需要找到一种方法将其限制为接收特定的夜间开始和夜间结束时间。

这将从停车许可证表中选择有效时间早于夜间开始时间以及有效时间晚于夜间结束时间的任何行。如果您希望它具有包容性,您可以相应地更改小于和大于运算符。

编辑

这也假设所有变量都是日期时间变量。我相信这是在这里最相关的变量。

【讨论】:

  • 你曾经解决过这个问题吗?只是好奇你的解决方案是什么。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-02
  • 1970-01-01
  • 2013-09-27
相关资源
最近更新 更多