I was just playing with some random timestamps for a week, for a month, for a year ...
select distinct current_date+((random()::numeric)||'month')::interval from generate_series(1,100) order by 1; It´s with distinct clause because if you change that 'month' for a 'year' it´ll return only 12 rows, instead of 100. So, why years part of interval works differently than any other ? select '1.01 week'::interval; --> 0 years 0 mons 7 days 1 hours 40 mins 48.00 secs select '1.01 month'::interval; --> 0 years 1 mons 0 days 7 hours 12 mins 0.00 secs select '1.01 year'::interval; --> 1 years 0 mons 0 days 0 hours 0 mins 0.00 secs thanks Marcos