oracle 查询两个日期之间的工作日
时间: 2024-05-05 11:21:16 浏览: 83
可以使用以下 SQL 查询语句来查询两个日期之间的工作日数量:
```
SELECT COUNT(*) AS workdays
FROM (
SELECT TO_DATE('2022-01-01', 'YYYY-MM-DD') + LEVEL - 1 AS date
FROM dual
CONNECT BY LEVEL <= TO_DATE('2022-01-31', 'YYYY-MM-DD') - TO_DATE('2022-01-01', 'YYYY-MM-DD') + 1
)
WHERE TO_CHAR(date, 'Dy') NOT IN ('Sat', 'Sun');
```
在这个查询语句中,我们首先使用 `CONNECT BY LEVEL` 来生成从起始日期到结束日期之间的所有日期。然后使用 `TO_CHAR(date, 'Dy')` 函数来获取每个日期对应的星期几,并排除周六和周日。最后,使用 `COUNT(*)` 函数来计算工作日数量。你可以将查询语句中的起始日期和结束日期替换为你需要查询的日期。
相关问题
oracle 查询两个日期的工作日的天数
在Oracle中,可以使用以下语句查询两个日期之间的工作日天数:
```sql
SELECT COUNT(*) AS workdays
FROM (
SELECT TRUNC(start_date) + LEVEL - 1 AS day
FROM dual
CONNECT BY LEVEL <= TRUNC(end_date) - TRUNC(start_date) + 1
)
WHERE TO_CHAR(day, 'D') <= 5;
```
其中,`start_date` 和 `end_date` 分别是要查询的两个日期。这个语句使用了一个子查询来生成两个日期之间的所有日期,然后使用 `TO_CHAR` 函数将日期转换为星期几,然后筛选出工作日(星期一至星期五)并计算它们的数量。
oracle两个日期间隔相差工作日数
你可以使用以下SQL语句来计算两个日期之间的工作日数:
```
SELECT COUNT(*) AS WORKDAYS
FROM (
SELECT ROWNUM AS RN
FROM DUAL
CONNECT BY ROWNUM <= (enddate - startdate) + 1
)
WHERE TO_CHAR(startdate + RN - 1, 'D') NOT IN (1,7);
```
其中,startdate和enddate是你要计算的两个日期。这个SQL语句的思路是生成一个从startdate到enddate之间的日期序列,然后通过过滤掉周六和周日来计算工作日数。
阅读全文