【问题标题】:Oracle query for 2 previous business day前 2 个工作日的 Oracle 查询
【发布时间】:2019-01-25 14:51:38
【问题描述】:

我们使用的是 Oracle 11。 我们有一个 DateRanges 表,它通过执行以下查询为我们提供前一个工作日:

SELECT START_DATE FROM DateRanges WHERE ID = 14

--> START_DATE 是前一个工作日(在上面的示例中,START_DATE = 1/24/19

我们有一个带有日期列 (LIQ.UPD_DT) 的表,我们需要在 LIQ 表和 SEC 查询之间进行 LEFT JOIN,其中 LIQ.UPD_DT > 前 2 个工作日。

例如: 今天是 19 年 1 月 25 日。

前 2 个工作日是 2019 年 1 月 23 日。

我们如何做这个查询? (我需要将 (+)= 用于 LEFT JOIN,因为我将此查询提供给的应用程序不执行 LEFT JOIN 语法):

WHERE LIQ.ID (+)= SEC.ID AND LIQ.UPD_DT (+) >= '{2 previous business day}'

谢谢。

【问题讨论】:

    标签: oracle date datetime oracle11g


    【解决方案1】:

    在 Oracle 中,您可以在日期中添加和减去天数(及其分数)。所以今天是 sysdate,包括日期和时间,所以你不关心时间然后“> trunc(sysdate) - 2”就是你写比较的方式。

    要添加到我之前发布的内容,您需要针对工作日进行调整,具体操作方式取决于您的商店。一些商店维护一个带有假期等的商店日历表......但一种方法是使用如下代码来跳过周六和周日。 - - 选择 trunc(sysdate) - r from (从双重连接中选择 rownum r by rownum

    TRUNC(SYS

    19 年 1 月 24 日 19 年 1 月 23 日 19 年 1 月 22 日 19 年 1 月 21 日 19 年 1 月 18 日 19 年 1 月 17 日

    已选择 6 行。 -- 注意第 19 天和第 20 天不在列表中,这样的计算将取代上面硬编码的 2 天。

    【讨论】:

      猜你喜欢
      • 2019-06-19
      • 2019-06-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多