0

私のデータベースには、レコードの作成日を保存する属性があります。保存された日付の形式は次のとおりです。

2013/06/18 19:03:24

日付だけを検索する必要があり、時間には興味がありません

このモードで試してみましたが、うまくいきません:

Report.find_all_by_created_at("2013-06-18").each do |r|  %> 
  [...]
 end 
4

5 に答える 5

1

次の場所に範囲を渡すことができます。

date = Date.new(2013,6,18)
Report.where(created_at: date.beginning_of_day..date.end_of_day)

これにより、次のような SQL ステートメントが作成されます。

SELECT `reports`.* FROM `reports` WHERE `reports`.`created_at` BETWEEN '2013-06-18  00:00:00' AND '2013-06-18 23:59:59'
于 2013-06-19T13:35:36.690 に答える
0

として収集しているようでDateTime、メソッドを使用して検索可能なオブジェクトto_date()に変更できる可能性があります。Date

http://api.rubyonrails.org/classes/DateTime.html#method-i-to_date

于 2013-06-19T13:09:06.250 に答える
0

おそらく最善の解決策ではありませんが、次のことができます。

Report.where("created_at >= ? and created_at < ?","2013-06-18","2013,06-19").each do |r|
  [...]
end
于 2013-06-19T13:06:33.780 に答える
0

SQLクエリでマッチャーのように使用できます

Report.where("created_at LIKE '2013-06-18%'")

またはSqueel、ルビーのような構文でSQL関数を呼び出すことができる宝石を見て、クエリを生成するものを使用できます

WHERE cast(created_at as date) = '2013-06-18'
于 2013-06-19T13:10:11.553 に答える