为循环中的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'
);