📅  最后修改于: 2023-12-03 15:03:24.005000             🧑  作者: Mango
如果你需要在 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参数来指定日期名的语言。
如果你需要选择其他日期范围,可以用不同的开始和结束日期替换上述语句中的日期文本即可。