Postgres中的随机日期

问题描述

我试图在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