可以使用EXTRACT函数来获取当前月份的第一天是星期几,然后根据这个值来判断第一周的长度。

以下是一个示例代码:

-- 获取当前月份的第一天是星期几
SELECT EXTRACT(DOW FROM DATE_TRUNC('month', CURRENT_DATE)) AS first_day_of_month;

-- 判断第一周的长度
WITH cte AS (
  SELECT
    CASE 
      WHEN EXTRACT(DOW FROM DATE_TRUNC('month', CURRENT_DATE)) <= 5 THEN 12
      ELSE 7 + EXTRACT(DOW FROM DATE_TRUNC('month', CURRENT_DATE))
    END AS first_week_length
)
SELECT 
  CASE 
    WHEN EXTRACT(DAY FROM CURRENT_DATE) <= cte.first_week_length THEN '第一周'
    ELSE '第二周'
  END AS week_name
FROM cte;

首先,使用EXTRACT函数获取当前月份的第一天是星期几。如果第一天是星期一到星期五(DOW的值为0到4),则第一周的长度为12天(包括第一天)。否则,第一周的长度为7天加上第一天的星期数。

然后,使用CTE将第一周的长度存储为一个临时变量。最后,根据当前日期和第一周的长度来判断当前是第几周,并命名为'第一周'或'第二周'。

PostgreSQL 灵活定义每月第一周:根据长度调整命名

原文地址: https://www.cveoy.top/t/topic/npOK 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录