使用两个日期之间的随机日期时间更新每一行

时间:2017-08-02 09:24:33

标签: sql postgresql

我有一个名为date_created的列,我希望每一行都保留一个随机日期,其日期边距为当前时间的-2天。

我正在运行以下查询,但它会使用相同的随机日期更新所有行。我希望每一行都是随机的,而不是一样的。

update table set date_created=(select NOW() + (random() * (NOW()+'-2 days' - NOW())) + '-2 days')

任何想法都会受到赞赏。

2 个答案:

答案 0 :(得分:2)

使用表达式代替查询:

update my_table 
set date_created= NOW() + (random() * (NOW()+'-2 days' - NOW())) + '-2 days'

答案 1 :(得分:2)

PostgreSQL正在优化您的子查询,以便它只运行一次,从而导致所有行都使用相同的随机值。要确保每行运行一次random(),请使用表达式而不是子查询。此外,您的计算可以简化一点。

建议改进查询:

UPDATE my_table SET date_created = now() - random() * INTERVAL '2 days'