2

Rails3で、今年の日付を持つすべてのレコードを取得するにはどうすればよいですか?「日付」が今年であるすべての「プロジェクト」を取得したいと思います。

私はそれが次のようなものになると思います:

@projects_this_year = Project.where(:date.Time.year == Time.now.year)
or
@projects_this_year = Project.where(:date >= ?, Time.now.year)

私はドキュメントを読んでいますが、これはまだ完全には理解されていません。

4

2 に答える 2

3

次のようなことができます(MySQL DBを想定):

@projects_this_year = Project.where("year(date) = ?", Time.now.year)

以上:

@projects_this_year = Project.where("year(date) = year(utc_timetamp())")

タイムライブラリをロードする必要はありません。

参考:http ://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html

編集


データベースに依存しないようにする場合は、次のようにすることができます。

@projects_this_year = Project.where("date >= ?", Time.now.at_beginning_of_year)

于 2012-05-24T01:57:47.590 に答える
0

@Davidの回答を拡張して、特定の月または年を頻繁に必要とする場合、またはパラメータを使用して、モデルでこれを動的にすることもできます。

def self.get_year(date)
    # sanitize if params
    safe = ['2011', '2012', '2013']
    if safe.include?(date)
         where("year(created_at) = ?", Time.parse("#{date}-01-01 11:11:11 -0500").year)
    else
         scoped
    end
end

元:

Product.get_year('2012')

これをherokuで機能させるには、以下を変更してください。

where("date_part('year', created_at) = ?", Time.parse("#{date}-01-01 11:11:11 -0500").year

http://www.java2s.com/Code/PostgreSQL/Date-Timezone/datepartyeardate.htm

于 2013-03-21T21:11:45.293 に答える