Случайная дата в postgres

#sql #postgresql #datetime #random #intervals

#sql #postgresql #дата и время #Случайный #интервалы

Вопрос:

Я пытаюсь сгенерировать случайную дату в postgres в качестве конечной даты и вторую дату за неделю до этого в качестве начальной даты. Я пытался выполнить следующий запрос, но он не работает. : / Заранее благодарю вас за помощь.

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

Ответ №1:

Вы не можете повторно использовать вычисляемый столбец в той же области, в которой он был определен. Повторение выражения здесь не является вариантом, поскольку вычисление не является детерминированным. Подход использует подзапрос:

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

Комментарии:

1. Дополнительно: date((current_date - trunc(random() * 365) * '1 day'::interval)) может быть упрощен до current_date - (random() * 365)::int