为循环中的datetime生成SQL

为循环中的datetime生成SQL,sql,postgresql,plpgsql,Sql,Postgresql,Plpgsql,在这里,我想打印循环中的日期 DO$$ 声明计数器整数:=0; 声明间隔天数时间戳; 开始 计数器时,您必须稍微修改代码: DO $$ DECLARE counter INTEGER := 0; interval_days TIMESTAMP := current_timestamp; BEGIN WHILE counter <= 5 LOOP counter := counter + 1; interval_days := interval_

在这里,我想打印循环中的日期

DO$$
声明计数器整数:=0;
声明间隔天数时间戳;
开始

计数器时,您必须稍微修改代码:

DO $$
DECLARE
   counter INTEGER := 0; 
   interval_days TIMESTAMP := current_timestamp;
BEGIN
   WHILE counter <= 5 LOOP
      counter := counter + 1; 
      interval_days := interval_days - INTERVAL '1 DAY';
      RAISE NOTICE '%', interval_days;
   END LOOP; 
END;$$;

这回答了你的问题吗?为什么不直接使用
select*from generate_series(当前时间戳-间隔'5天',当前时间戳,间隔'1'天)
谢谢,Laurenz,一匹没有名字的马我得到了一个解决方案。但我的问题是数字不是串联的。where counter可以是任何其他数字noo需要在一个系列中。@codebuzzz当在代码中以相同的天数递增时,“其他”数字是什么?如果您在中间的某个位置生成了一个随机数,并且需要将整数转换为间隔,那么请使用,例如,
make_interval(days:=)
interval'1 day'*
,正如我在对问题的评论中建议您的答案那样。@astentx问题对此不是很清楚。我解释说时间间隔可能会改变,但对于一个查询来说总是一样的。在这种情况下,您只需更改代码中的间隔,例如使用函数。如果时间间隔随单个查询而变化,则需要对该信息的来源进行描述。@LaurenzAlbe,这也是我的假设。这就是为什么我问OP如何获得这些数字,以便您的答案可以被接受或改进。@astentx无论如何,看起来这个问题被放弃了。我们把它关上吧。
SELECT *
FROM generate_series(
        current_timestamp - INTERVAL '1 DAY',
        current_timestamp - INTERVAL '6 DAY',
        INTERVAL '-1 DAY'
     );