📌  相关文章
📜  oracle sql 选择两个日期之间的所有日期,周末除外 - SQL (1)

📅  最后修改于: 2023-12-03 15:03:24.005000             🧑  作者: Mango

Oracle SQL 选择两个日期之间的所有日期,周末除外

如果你需要在 Oracle 数据库中选择两个日期之间的所有非周末日期,可以使用以下查询语句:

SELECT *
FROM   (
         SELECT TO_DATE('2019-01-01', 'YYYY-MM-DD') + LEVEL - 1 AS dt
         FROM   DUAL 
         CONNECT BY LEVEL <= TO_DATE('2019-01-31', 'YYYY-MM-DD') - TO_DATE('2019-01-01', 'YYYY-MM-DD') + 1
       )
WHERE  TO_CHAR(dt, 'Dy', 'NLS_DATE_LANGUAGE = English') NOT IN ('Sat', 'Sun')

这将返回从 2019 年 1 月 1 日到 2019 年 1 月 31 日(不包括周末)之间的所有日期。

在这个查询中,我们使用了一个带有"CONNECT BY LEVEL"的 Oracle 元素 (也称为递归查询) 来生成日期序列。最终查询结果中,我们使用了 TO_CHAR 函数来排除星期六和星期日,并使用NLS_DATE_LANGUAGE参数来指定日期名的语言。

如果你需要选择其他日期范围,可以用不同的开始和结束日期替换上述语句中的日期文本即可。