我有一个postgres
查询,当我将它作为查询运行时效果很好。但是,我想将其转换为pl/r
并能够动态输入开始和结束日期。
有效的 SQL 是:
with date as (
select d as first_day,
d + interval '1 month' - interval '1 day' as last_day
from generate_series('2010-01-01'::date,
'2018-12-01'::date,
'1 month') as d
) select last_day::date as snapshot_date from date;
想做一个 pl/r 喜欢:
DROP FUNCTION IF EXISTS standard.seq_monthly(min_date_str char, max_date_str char);
CREATE FUNCTION standard.seq_monthly(min_date_str char, max_date_str char)
RETURNS setof dates AS
$$
with date as (
select d as first_day,
d + interval '1 month' - interval '1 day' as last_day
from generate_series(min_date_str::date,
max_date_str::date,
'1 month') as d
) select last_day::date as snapshot_date from date;
$$
LANGUAGE 'plr';
select * from standard.seq_monthly('2010-01-01' , '2018-12-01')
但是,我在运行该函数时遇到错误。错误是
R 解析错误在“PLR711818 <- function(min_date_str,max_date_str)
已尝试将最大最小日期也声明为日期。
非常感谢任何帮助。