首页 > 解决方案 > 将 postgre 函数迁移到 mysql:检索日期范围

问题描述

我想将此 postgre 函数迁移到 mysql。该函数接收两个日期作为参数,并返回一个包含接收到的中间日期的数组。

例子:

发送两个日期“2019-01-01”和“2019-05-31”。

我得到:{'2019-01-01','2019-02-01','2019-03-01','2019-04-01','2019-05-01'}

函数postgre:

    CREATE OR REPLACE FUNCTION schema.date_range(
    start_date date,
    end_date date)
RETURNS date[]
    LANGUAGE 'plpgsql'
    COST 100
    VOLATILE 
--    ROWS 0
AS $BODY$

DECLARE
date_exe date := start_date;
array_date date[];
BEGIN

WHILE date_exe <= end_date
LOOP
    -- MAKE YOUR STUFF
    RAISE NOTICE '%', date_exe;
    array_date := array_append(array_date,date_exe);
    date_exe := date_exe + interval '1 month';
END LOOP;

RETURN array_date;

END;

$BODY$;

这个想法是在一个表中插入两个日期之间每月的期间,返回的范围(来自 postgre 函数)执行一个 for 循环来插入这些值:

SET array_date_range = schema.date_range( '2019-01-01', '2019-05-31'); -- function I want to migrate

for i in  coalesce(array_lower(array_date_range, 1),1)..coalesce(array_upper((array_date_range, , 1),1) loop


 SELECT LAST_DAY((array_date_range[i]) INTO v_date_end;


 INSERT INTO schama.table (date_ini, date_end)

 VALUES (array_date_range[i] ,v_date_end);

end loop;

提前致谢

标签: mysqlpostgresql

解决方案


推荐阅读