2012-05-15 2 views
0

Я хочу найти все объявления в определенном месяце. "declaration_date" - атрибут datetime. У меня это есть, но это не удается, любые идеи?Получить месяц с datetime

declaration = Declarations.all(:conditions => ['declaration_date.strftime("%-m") = 2') 
+0

Это зависит от диалекта SQL. Пожалуйста, пометьте свою СУБД. В качестве альтернативы вы можете вытащить все записи и фильтровать в Ruby, но это намного медленнее. – Amadan

ответ

0

Вы хотите объявления в течение месяца в конкретном году? Если это так, попробуйте что-то вроде этого:

time_range = (DateTime.new(2001,2,3) - 1.month)..DateTime.new(2001,2,3) 
declaration = Declaration.where('declaration_date' => time_range) 

Вы можете следить за эту технику, чтобы получить заявления в том же месяце в течение нескольких лет.

Смотрите также, раздел 11.3 активных Docs Запись запроса интерфейса http://guides.rubyonrails.org/active_record_querying.html

+0

Это отлично работает, спасибо – John

+0

Добро пожаловать! – novemberkilo

0

Я ожидаю, что STRFTIME возвращает строку, а вы сравниваете его с числом 2. Try сравнивая его со строкой «2».

declaration = Declarations.all(:conditions => ["'declaration_date.strftime("%-m") = '2'") 
Смежные вопросы