在 Oracle SQL 中恢复每月的所有周数

Recover all weeks of a month in Oracle SQL

提问人:TheoB 提问时间:2/20/2023 更新时间:2/20/2023 访问量:49

问:

我想构建一个 SQL 语句来自动检索有关一个月中所有周的信息。 例如,对于 2023 年 2 月:

  • 检索第一周(周一至周日):2023 年 1 月 30 日至 2023 年 1 月 5 日 ...
  • 检索上周: 27/02/2023 - 05/03/2023.

提前致谢!

SQL Oracle 日期 周数 月日历

评论

0赞 astentx 2/20/2023
这回答了你的问题吗?在两个日期之间生成日期。或使用 SQL 生成日期范围

答:

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

小提琴