#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