在etl清洗导入数据时,偶尔需要遍历两个日期间的每一天进行抽取数据,可以使用postgre内置函数。

select * from generate_series('2022-1-01 00:00:00'::TIMESTAMP, '2022-1-02 00:00:00'::TIMESTAMP, '1 day');

image.png

使用存储过程进行循环:

CREATE OR REPLACE PROCEDURE "public"."ALL_D_PROCESS_new"()
 AS $BODY$
 DECLARE
  date bpchar;
 date_l  record; 
 monthid int4 := 202201;
	BEGIN
--字符串日期,格式:2020-01-01
--date := '2020-01-01';
FOR date_l  IN  SELECT daytime::DATE 
		FROM generate_series 
		('2022-01-01'::DATE, '2022-01-31'::DATE, '1 day' ) s ( daytime ) 
LOOP
	date =date_l.daytime;

raise notice 'date_1.dattime is %',date;

END LOOP;
END$BODY$
  LANGUAGE plpgsql

结果:
image.png

文章作者: Administrator
版权声明: 本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 ElIauk!
喜欢就支持一下吧