pgsql判断当月的第一周如果小于5天则连着下一周即第二周一起命名为第一周。如果大于5天则该周就是第一周然后下一周为第二周
可以使用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将第一周的长度存储为一个临时变量。最后,根据当前日期和第一周的长度来判断当前是第几周,并命名为“第一周”或“第二周”。
原文地址: https://www.cveoy.top/t/topic/b74B 著作权归作者所有。请勿转载和采集!