Need to generate random date(1st of every month) selected from a given date range in hive (inclusive range). For example if range is 25/12/2021 - 01/06/2022, then I want to select random date from this set of dates{01/01/2022, 01/02/2022, 01/03/2022, 01/04/2022, 01/05/2022, 01/06/2022).
Can any one guide me with my query?
I tried using
select concat('2019','-',lpad(floor(RAND()*100.0)%10+1,2,0),'-',lpad(floor(RAND()*100.0)%31+1,2,0));
but this needs date, I need to pass a column value as low range and a particular date as 2nd range. Since there are different dates for different columns for the low range to b passed.
You can use below code to calculate a random date between two dates.
You can test the logic using below code-
Explanation -
Idea is to add a random number that is less than date difference to the start date.
datediff()- This returns diff of date as INT.rand()- This returns a number between 0,1(both included). Which means, your start or end date can be same as random date sometime.date_add- This adds the random integer to the start date to generate random date.trunc(dt,'MM')- is going to return first day of the month.