提问人:TheoB 提问时间:2/20/2023 更新时间:2/20/2023 访问量:49
在 Oracle SQL 中恢复每月的所有周数
Recover all weeks of a month in Oracle SQL
问:
我想构建一个 SQL 语句来自动检索有关一个月中所有周的信息。 例如,对于 2023 年 2 月:
- 检索第一周(周一至周日):2023 年 1 月 30 日至 2023 年 1 月 5 日 ...
- 检索上周: 27/02/2023 - 05/03/2023.
提前致谢!
答:
0赞
MT0
2/20/2023
#1
使用行生成器生成当月的周数列表:
WITH input (month) AS (
SELECT DATE '2023-02-01' FROM DUAL
),
calendar (week_start) AS (
SELECT TRUNC(TRUNC(month, 'MM'), 'IW') + 7 * (LEVEL - 1)
FROM input
CONNECT BY TRUNC(TRUNC(month, 'MM'), 'IW') + 7 * (LEVEL - 1)
< ADD_MONTHS(TRUNC(month, 'MM'), 1)
)
SELECT week_start,
week_start + INTERVAL '6 23:59:59' DAY TO SECOND AS week_end
FROM calendar
输出:
WEEK_START | WEEK_END |
---|---|
2023-01-30 00:00:00 | 2023-02-05 23:59:59 |
2023-02-06 00:00:00 | 2023-02-12 23:59:59 |
2023-02-13 00:00:00 | 2023-02-19 23:59:59 |
2023-02-20 00:00:00 | 2023-02-26 23:59:59 |
2023-02-27 00:00:00 | 2023-03-05 23:59:59 |
评论