postgres 中的随机日期

问题描述 投票:0回答:2

我试图在 postgres 上生成一个随机日期作为结束日期,并在一周前生成第二个日期作为开始日期。我尝试了以下请求,但它不起作用。 :/ 预先感谢您的帮助。

SELECT date((current_date - trunc(random() * 365) * '1 day'::interval)) as enddate,
date(enddate - '7 day'::interval) as startdate;
sql postgresql datetime random intervals
2个回答
0
投票

您不能在定义的相同范围内重用计算列。此处不能重复表达式,因为计算不是确定性的。一种方法使用子查询:

SELECT enddate,  enddate - '7 day'::interval startdate
FROM (
    SELECT date(current_date - trunc(random() * 365) * '1 day'::interval) as enddate
) t

0
投票

生成从现在到 NNN 天前的随机日期的函数:

create or replace function app.get_random_date(
  p_days_look_back int
)
  returns timestamp as
$$
declare
  v_interval interval;
  v_result timestamp;
begin
  v_interval := make_interval(days => p_days_look_back);
  v_result := now() - v_interval +  random() * v_interval;
  return v_result;
end
$$ language plpgsql;
© www.soinside.com 2019 - 2024. All rights reserved.