返回

Mysql过滤两列之间的两个日期

发布时间:2022-07-28 23:33:55 254
# 数据库

我试图得到的结果将是过滤两个日期之间的两个日期。为了提供更多背景信息,我有一个包含员工假期的表,我想得到员工在选定日期范围内度假的所有日期。

例子:

员工1的假期日期范围为2022-07-20至2022-07-30

员工2的假期日期范围为2022-07-22至2022-07-25

表看起来像:

ID    employee_id  StartDate      EndDate
 1      1          2022-07-20    2022-07-30
 2      2          2022-07-22    2022-07-25

我想做的是过滤2022-07-21-2022-07-28日期范围内有假期的所有员工

当我尝试这样的事情时:

SELECT * FROM emp_holidays WHERE StartDate >= '2022-07-21' and EndDate <= '2022-07-28'

然后我从数据库中只得到了第二条记录,因为只有一个员工匹配这个过滤器,但我知道今天rande第一个员工也在度假。

最好的结果是什么?

eployee_id date
1          2022-07-21
1          2022-07-22
1          2022-07-23
1          2022-07-24
1          2022-07-25
1          2022-07-26
1          2022-07-27
1          2022-07-28
2          2022-07-22
2          2022-07-23
2          2022-07-24
2          2022-07-25

另一个令人惊讶的结果是

eployee_id date_from  date_to
1          2022-07-21 2022-07-25
2          2022-07-22 2022-07-25

任何帮助都将是惊人的:)

我正在考虑一个新的助手表,其中包含未来50年的日期,然后从helper选项卡获取数据,然后检查是否StartDate是在select from helper表结果中,但我不确定这是否是最佳解决方案。

特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(1)
按点赞数排序
用户头像