如何在查询c#中检查startdate和enddate之间的多个日期

Far*_*mad 1 c# mysql date

在c#中工作.我有两个日期对象命名start_date_entered,并end_date_entered和我在我的表两列start_dateend_date.我必须查询我的表格,如果之间start_date_enteredend_date_entered之间存在任何日期start_dateend_date.

DateTime start_date_entered = Convert.ToDateTime('01/01/2018 12:00:00 AM');
DateTime end_date_entered = Convert.ToDateTime('03/01/2018 12:00:00 AM');
Run Code Online (Sandbox Code Playgroud)

数据库列start_date包含让我们说25th march和end_date包含27th march.如果两个序列都有共同的日期,则不应从数据库返回任何行.如果两个序列之间存在任何共同日期,则数据库应返回该行.

select * from employee_leaves where ... between start_date and end_date
Run Code Online (Sandbox Code Playgroud)

我应该在"......"中写什么,因为我想在这里start_date_enteredend_date_entered这里之间设置一系列日期

我试过这些,

获取StartDate和EndDate之间的日期

如何列出两个日期之间的所有日期[重复]

但还没有找到任何解决方案.

Mar*_*ell 5

如果您要查询与给定时间范围(开始/结束)相交的所有内容,请尝试可视化您想要包含的内容的所有可能性; 例如:

       |<--range-->|
       |           |
   [---+-----------+----]          scenario 1 - starts before, ends after
       |   [---]   |               scenario 2 - starts and ends inside
       |   [-------+-----------]   scenario 3 - starts inside, ends after
   [---+-------]   |               scenario 4 - starts before, ends inside
       |           |
Run Code Online (Sandbox Code Playgroud)

将通过检查一端是否在查询中来处理场景2,3和4 ; 方案1需要单独处理; 所以:

where x.Start between @start and @end
   or x.End between @start and @end
   or (x.Start < @start and x.End > @end)
Run Code Online (Sandbox Code Playgroud)

请注意,这between是一个包含范围查询; 如果您需要更多地控制边界条件,请between使用您选择的不等运算符扩展到一对明确的开始/结束限制.