c# - 如何在查询 C# 中检查开始日期和结束日期之间的多个日期

标签 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 包含 3 月 25 日,end_date 包含 3 月 27 日。如果两个序列有任何共同的日期,则不应从数据库返回任何行。如果两个序列之间有任何共同的日期,那么数据库应该返回该行。

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]

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

最佳答案

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

       |<--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 将通过检查查询中是否有 either 端来处理;场景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 扩展为一对明确的开始/结束限制。

关于c# - 如何在查询 C# 中检查开始日期和结束日期之间的多个日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48683536/

相关文章:

c# - 反射扩展法

c# - SQLite.Net UTC 日期时间

mysql - 更改MySQL读取的日期格式

java - 使用正则表达式解析日期

c# - PayPal IPN - 发送链接以支付金额?

c# - 为 IIS 中托管的 WCF 服务创建自定义 .svc 处理程序

mysql - 将 Magento 升级到 1.13.1 后的问题查询

MySQL 5.1.65 |选择在哪里找不到我知道的东西

mysql - 关于在sql`中获取自动列

java - android Date 和 SimpleDateFormat 输出错误