检查两个日期是否与日期范围完全重叠

时间:2014-07-23 15:19:15

标签: sql .net linq datetime

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

我需要的是阅读所有在NightStart之前开始并在NightEnd之后结束的停车许可证,这意味着它是一个有效的过夜停车通行证。

我正在尝试在.NET,LINQ

中执行此操作

任何有关逻辑或设计的帮助都将受到赞赏。

1 个答案:

答案 0 :(得分:0)

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

从这里开始:

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

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

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

修改

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