更新postgres列中的一系列随机日期

lf3rwulv  于 2021-08-09  发布在  Java
关注(0)|答案(1)|浏览(338)

我在postgresql中有一个简单的表,有两列“profile\u id”(text)policy\u expires(date)

“策略过期”列为空(仅空值)。我想用s系列的日期更新那一列。我试过这个问题

insert into public.renewal_large ("policy_expires") 
select  generate_series('2020-07-01'::date,'2021-08-01'::date,'1 hour'::interval

它确实创建了我需要的一系列日期,但它还在每个新日期旁边创建了一个空的profile id值。

我正在尝试找出正确的查询,用一系列日期更新现有profie\u id列

bkhjykvo

bkhjykvo1#

你想要一个 update 声明而不是 insert -大概,您希望每行上有不同的日期(时间部分似乎不相关,否则您宁愿使用 timestamp 比一个 date ).
如果你的 id s总是在增加,你可以用它们来增加:

update renewal_large
set policy_expires = '2020-07-01'::date + (profile_id::int - 1) * interval '1' day

否则,可以使用 row_number() ,然后用它来计算目标日期:

update renewal_large r
set policy_expires = '2020-07-01'::date + (r1.rn - 1) * interval '1' day
from (select id, row_number() over(order by id) rn from renewal_large) r1
where r1.id = r.id

相关问题