【问题标题】:Update a series of random dates in a Postgres column更新 Postgres 列中的一系列随机日期
【发布时间】:2020-06-08 20:24:34
【问题描述】:

我在 postgresql 中有一个包含两列的简单表 “Profile_id”(文本) policy_expires(日期)

policy_expires 列是空的(只有空值)。 我想用 s 系列日期更新该列。 我试过这个查询

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

它确实创建了我需要的一系列日期,但它还在每个新日期旁边创建了一个空的配置文件 ID 值。

我正在尝试找出正确的查询来使用日期系列更新现有的 profie_id 列

【问题讨论】:

    标签: sql postgresql date select sql-update


    【解决方案1】:

    您需要update 语句而不是insert - 并且大概您希望每行有不同的日期(时间部分似乎不相关,否则您宁愿使用timestamp 而不是date )。

    如果您的ids 一直在增加,您可以只增加它们:

    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
    

    【讨论】:

      猜你喜欢
      • 2013-07-15
      • 2021-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-17
      • 2020-05-23
      • 2021-10-01
      • 1970-01-01
      相关资源
      最近更新 更多