10

How can I change the date by the random number of days in PostgreSQL?

Unfortunately Generate a random number in the range 1 - 10 solution with trunc doesn't work:

select date(now()) + (trunc(random()  * 20)) 

results in:

ERROR:  operator does not exist: date + double precision
LÍNEA 1: select date(now()) + (trunc(random()  * 20)) 
Community
  • 1
  • 1
Bogdan Gusiev
  • 8,027
  • 16
  • 61
  • 81

2 Answers2

28
select date(now() + trunc(random()  * 20) * '1 day'::interval);

Any existing date column can also be used in place of now()

See: https://www.postgresql.org/docs/current/functions-datetime.html

Milen A. Radev
  • 60,241
  • 22
  • 105
  • 110
4

How random? For example - if you want random data from last year:

select cast( now() - '1 year'::interval * random()  as date );