可以使用 extract 函数获取日期的年份和月份,然后使用 date_trunc 函数获取月份的第一天,并通过 date_part 函数获取该天是星期几。然后根据该天是星期几,判断该周实际有几天。

示例代码如下:

SELECT
    date_part('d', '2023-04-01'::date) AS day_of_month,
    date_part('dow', date_trunc('month', '2023-04-01'::date)) AS first_day_of_week,
    CASE
        WHEN date_part('dow', date_trunc('month', '2023-04-01'::date)) <= 5 THEN 7 - date_part('dow', date_trunc('month', '2023-04-01'::date)) + 1
        ELSE 14 - date_part('dow', date_trunc('month', '2023-04-01'::date)) + 1
    END AS days_of_first_week;

输出结果为:

day_of_month | first_day_of_week | days_of_first_week
--------------+-------------------+-------------------
            1 |                 6 |                 2
(1 row)

说明2023年4月1日是该月的第一天,也是星期六,因此该月的第一周只有2天。

PostgreSQL 计算当月第一周天数

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

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