我试图在 postgres 上生成一个随机日期作为结束日期,并在一周前生成第二个日期作为开始日期。我尝试了以下请求,但它不起作用。 :/ 预先感谢您的帮助。
SELECT date((current_date - trunc(random() * 365) * '1 day'::interval)) as enddate,
date(enddate - '7 day'::interval) as startdate;
您不能在定义的相同范围内重用计算列。此处不能重复表达式,因为计算不是确定性的。一种方法使用子查询:
SELECT enddate, enddate - '7 day'::interval startdate
FROM (
SELECT date(current_date - trunc(random() * 365) * '1 day'::interval) as enddate
) t
生成从现在到 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;