Oracle查询前两个工作日

时间:2019-01-25 14:51:39

标签: oracle date datetime oracle11g

我们正在使用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>前两个工作日。

例如: 今天是19/1/25。

前2个工作日是19/1/23。

我们如何执行此查询? (我需要将(+)=用作LEFT JOIN,因为我向该查询提供信息的应用程序没有使用LEFT JOIN语法):

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

谢谢。

1 个答案:

答案 0 :(得分:0)

在Oracle中,您可以在日期中添加和减去日期(及其部分)。所以今天是sysdate,包括日期和时间,所以您不必在意时间,那么“> trunc(sysdate)-2”将是您编写比较的方式。

要添加到我之前发布的内容中,您需要调整工作日,具体取决于您的商店。一些商店维护着带有假期的商店日历表,等等。但是一种方法是使用如下代码跳过星期六和星期日。 --  选择trunc(sysdate)-r  from(通过rownum <= 8从双连接中选择rownum r)  其中to_char(trunc(sysdate)-r,'D')不在('1','7')中 /

TRUNC(SYS

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

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