2011-10-15 102 views
1

控制器代碼月份的情況如何不起作用:設置基於「created_at」字段

@mailings = Mailing.find(:all, :conditions => ["created_at.month = ?", m]) 

錯誤消息:

Mysql::Error: Unknown column 'created_at.month' in 'where clause': SELECT * FROM `mailings` WHERE (created_at.month = 10) 

的感謝!

回答

1

嘗試:

@mailings = Mailing.find(:all, :conditions => ["MONTH(created_at) = ?", m]) 

你使用MySQL,你可以找到更多的文檔假設:MySQL Date and Time Functions

3

find:conditions參數直接插值到生成的SQL。因此,您可以使用SQL命令。

如果你使用MySQL你可以嘗試以下方法:

@mailings = Mailing.find(:all, :conditions => ["MONTH(created_at) = ?", m]) 

或者這一點,SQLite的:

@mailings = Mailing.find(:all, :conditions => ["strftime('%m', created_at) = ?", m])