sql—在postgresql中创建n天间隔函数

yzxexxkh  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(630)

我试图在postgresql中创建一个函数,它返回一组介于两个日期之间的日期,并且间隔一定。例如,如果我传递这两个日期参数 most_recent_day = 2020-01-10 以及 mininum_day = 2020-01-01 这个区间参数 n_day_group_interval = 5 ,函数将返回以下集合:

2020-01-10
2020-01-08
2020-01-06
2020-01-04
2020-01-02

下面是我的尝试 syntax error at or near "end" . 谢谢你的帮助。

create function get_n_day_group_dates(most_recent_day date, minimum_day date, n_day_group_interval varchar)
returns table (
    n_day_group_dates date
              )
    as $body$
    begin
        return query

    SELECT
                      date_trunc('day'::text, dd.dd)::date AS n_day_group_dates
               FROM

                    LATERAL generate_series(most_recent_day,
                        minimum_day,
                       '-'||n_day_group_interval||' day'::interval) dd(dd)
end;
    $body$
language plpgsql;
xwmevbvl

xwmevbvl1#

你把事情搞得太复杂了。不需要横向 date_trunc('day', ..) 与铸造相同 date .
要基于变量创建间隔,最简单的方法是 make_interval() ```
create function get_n_day_group_dates(most_recent_day date, minimum_day date, n_day_group_interval varchar)
returns table (n_day_group_dates date)
as $body$
SELECT g.dt::date
FROM generate_series(most_recent_day,
minimum_day,
make_interval(days => n_day_group_interval) as g(dt);
$body$
language sql;

相关问题