В ruby, вы, вероятно, могли бы выразить это красиво (для определенного года) с помощью Range:
(Time.utc(2012, 1, 1)..Time.utc(2012, 5, 1).end_of_month)
Но, сохраняя это в базе данных ... можно думать только о том, что вы сказали (столбцы)для начала / конца дня и месяца), а затем добавьте методы-обертки в модель, подобную этой:
def current_start
Time.utc(current_year, start_month, start_day)
end
...
def current_range
(current_start..current_end)
end