如何在postgresql中编写函数,根据传递给它的月份名称获取月份的开始日期和结束日期

如何在postgresql中编写函数,根据传递给它的月份名称获取月份的开始日期和结束日期,postgresql,Postgresql,我有一个场景,需要传递月份名称并获取该月份的开始和结束日期。(例如->如果用户选择一月,则应返回2019年1月1日和2019年1月31日) 我可以得到本月的开始和结束日期 当月的开始日期- select date(date_trunc('month', current_date)) 当月结束日期- select date(date_trunc('month', current_date) + interval '1 month - 1 day'); 我想要postgresql中的函数,它可以

我有一个场景,需要传递月份名称并获取该月份的开始和结束日期。(例如->如果用户选择一月,则应返回2019年1月1日和2019年1月31日)

我可以得到本月的开始和结束日期

当月的开始日期-

select date(date_trunc('month', current_date))
当月结束日期-

select date(date_trunc('month', current_date) + interval '1 month - 1 day');
我想要postgresql中的函数,它可以根据传递给它的月份名称返回月份的开始日期和结束日期。

  • 获取当前年份:
    date\u部分('year',current\u date)
  • 从月份和年份获取日期:
    到_date(| |,'monthyyy')
    。这会给出月份的第一个,因为没有给出日期值
  • 如前所述,计算月底
  • 给出两列

  • 如果用户选择“一月”,您希望获取哪一年?当前?@S-Man是的,我希望获取当前年。在我的情况下,月份是选择字段,因此,无论用户选择哪个月份,都应返回该月份的开始和结束日期。
    CREATE OR REPLACE FUNCTION get_month_start_and_end(_month text) 
    RETURNS TABLE (start_date date, end_date date) 
    AS $$
    BEGIN
        RETURN QUERY
        SELECT 
            _start_date,
            (_start_date + interval '1 month -1 day')::date
        FROM (
            SELECT 
                to_date(_month || date_part('year', CURRENT_DATE), 'MonthYYYY') AS _start_date
        ) s;
    END;
    $$ LANGUAGE plpgsql;