如何在查询c#

时间:2018-02-08 10:42:48

标签: c# mysql date

在c#中工作。 我有两个名为start_date_enteredend_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');

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

select * from employee_leaves where ... between start_date and end_date

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

我试过这些,

Fetching Dates Which Comes Between StartDate and EndDate

How to list all dates between two dates [duplicate]

但是没有找到任何解决方案。

1 个答案:

答案 0 :(得分: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
       |           |

方案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)

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