select 使用日期进行查询

select query manipulating with dates

我有一个包含 2 个日期列的 table。 start_date 和 end_date。我正在尝试从 start_date 和 end_Date 中获取包含日期或内部日期的数据。我还不知道如何创建查询。

我需要联系 emp_id,他在 4 月 9 日和 10 日请假。请有人​​帮忙! 谢谢!

如果您正在寻找单休,那么:

select l.*
from leaves l
where l.leave_start_date <= date '2020-04-10' and
      l.leave_end_date >= date '2020-04-09';

这适用于一系列日期,假设一个假期涵盖这些日期。

如果您有不同的日期,请使用聚合:

select l.emp_id
from leaves l
group by l.emp_id
having sum(case when date '2020-04-09' between l.leave_start_date and l.leave_end_date then 1 else 0 end) > 0 and
       sum(case when date '2020-04-10' between l.leave_start_date and l.leave_end_date then 1 else 0 end) > 0 ;