Select a Random Date Between Two Dates

Moderator: NorbertKrupa

Post Reply
User avatar
fsalvelt
Intermediate
Intermediate
Posts: 54
Joined: Sun Mar 18, 2012 1:34 am

Select a Random Date Between Two Dates

Post by fsalvelt » Tue Jul 17, 2012 1:46 pm

Hi, Can someone help me write a function that will return a random date between two dates? Or if it can't be done in a function maybe just the select statement?
Thank, Fred

id10t
GURU
GURU
Posts: 732
Joined: Mon Apr 16, 2012 2:44 pm

Re: Select a Random Date Between Two Dates

Post by id10t » Tue Jul 17, 2012 4:34 pm

Code: Select all

CREATE OR REPLACE FUNCTION randomdate(d1 TIMESTAMP, d2 TIMESTAMP)
RETURN TIMESTAMP
  AS BEGIN
    RETURN TO_TIMESTAMP(EXTRACT(EPOCH FROM d1) + RANDOMINT(FLOOR(EXTRACT(EPOCH FROM d2) - EXTRACT(EPOCH FROM d1))::INTEGER));
END;
test:

Code: Select all

test_db=> select randomdate('2011-12-31', '2012-01-03');
     randomdate      
---------------------
 2012-01-02 10:13:27

Code: Select all

test_db=> select randomdate('2000-01-01 03:07:13', '2010-12-03 13:43:11');
     randomdate      
---------------------
 2004-04-01 17:06:59
(1 row)

Code: Select all

test_db=> select randomdate('2000-01-01 03:07:13'::date, '2010-12-03 13:43:11'::date);
     randomdate      
---------------------
 2002-07-25 03:58:36
(1 row)

Code: Select all

test_db=> select randomdate('2000-01-01 03:07:13'::date, '2010-12-03 13:43:11'::date)::date;
 randomdate 
------------
 2007-03-19
(1 row)

User avatar
fsalvelt
Intermediate
Intermediate
Posts: 54
Joined: Sun Mar 18, 2012 1:34 am

Re: Select a Random Date Between Two Dates

Post by fsalvelt » Tue Jul 17, 2012 4:46 pm

PERFECT! Thanks, skwa!!!
Thank, Fred

Post Reply

Return to “New to Vertica Database Development”