、私はあなたがそのような場所の比較のTime.at
内部を行うことができるとは思いません。
一つのアプローチは、比較を逆転、そしてエポックからのミリ秒に年間有効にするようになります:
comparison_time = (Time.new(2017, 1, 1).to_f * 1000).to_i
@agent = Agent.where("created_at = ?", comparison_time)
注:あなたの行が年に正確にタイムスタンプされている場合は、あなたが使用できるような比較に等しいですあなたの例では。それ以外の場合は、開始日と終了日の両方が必要になるため、範囲を返すことができます。例:
start_time = (Time.new(2017, 1, 1).to_f * 1000).to_i
end_time = (Time.new(2018, 1, 1).to_f * 1000).to_i
@agent = Agent.where("created_at >= ? AND created_at <= ?", start_time, end_time)
別のアプローチは、あなたが大きなテーブルを持っている場合、これは大量のメモリを取ることができる、DateTime
にそれぞれのcreated_atとを変換し、しかし、2017年に比較して、あなたの薬のすべてをループになりますRailsはMySQLとは対照的に操作を行うためです。
両方の答えは実線です。しかし、この方法は私のニーズをより良く適合させます。助けを感謝します! – DollarChills