【问题标题】:select query manipulating with dates选择使用日期操作的查询
【发布时间】:2020-07-30 18:20:07
【问题描述】:

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

我需要获取 4 月 9 日和 10 日休假的 emp_id。请有人帮忙! 谢谢!

【问题讨论】:

  • “SELECT 查询”是“SQL”,而不是“PL/SQL”
  • 我正在使用 pl/sql 语言。感谢您的澄清。你对如何做到这一点有任何想法吗?感谢您的帮助
  • 我不确定你想要什么结果,但你可能正在寻找where start_date >= date '2020-04-17' and end_date <= ...?。为什么你认为你需要一个存储过程?
  • 考虑到我不知道他们叶子的最大值或最小值。我正在处理成千上万的数据。他们的假期可能从去年 3 月开始,到 5 月结束,仍然涵盖 4 月 9 日和 10 日
  • 对不起,我不明白你在追求什么。您显然有一些“日期”作为输入,并且您想检查休假日期。

标签: sql oracle date between


【解决方案1】:

如果您正在寻找单身假期,那么:

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 ;

【讨论】:

  • 非常感谢。这就是我一直在寻找的:)
猜你喜欢
  • 2013-06-15
  • 2017-10-12
  • 2018-12-15
  • 2012-03-05
  • 2017-12-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多