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

use*_*837 3 sql postgresql

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

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

update table set date_created=(select NOW() + (random() * (NOW()+'-2 days' - NOW())) + '-2 days')
Run Code Online (Sandbox Code Playgroud)

任何想法将不胜感激。

kli*_*lin 7

使用表达式代替查询:

update my_table 
set date_created= NOW() + (random() * (NOW()+'-2 days' - NOW())) + '-2 days'
Run Code Online (Sandbox Code Playgroud)


mar*_*usk 5

PostgreSQL 正在优化您的子查询,使其仅运行一次,从而导致所有行使用相同的随机值。为了确保random()每行运行一次,请使用表达式而不是子查询。另外,您的计算可以稍微简化一些。

建议改进的查询:

UPDATE my_table SET date_created = now() - random() * INTERVAL '2 days'
Run Code Online (Sandbox Code Playgroud)