3

時刻 (つまり、午後 6 時) を引き出すためだけに使用されるレコードが多数DateTime保存されており、それらを時刻でフィルター処理したいと考えています。たとえば、タイムスタンプが何曜日のものであるかに関係なく、時刻が午前 10 時から午後 2 時までのすべてのレコードを取得したいと考えています。

Railsでこれを行う方法はありますか? DateTimeこのデータを保存する最も簡単で最良の方法ではないかもしれないことを認識しているので、それを変更することにオープンです。また、Postgres を使用しています。

4

2 に答える 2

3

Postgres では、型キャストを使用して datetime/timestamp フィールドを時刻に変換できます。次に例を示します。

select * from posts where created_at::time BETWEEN '10:00:00' and '14:00:00';

したがって、Rails では、次のことができるはずです。

Post.where('start_at::time BETWEEN ? AND ?', '10:00:00', '14:00:00')

また、Postgres は AM/PM 形式も理解できるほどスマートです。

Post.where('start_at::time BETWEEN ? AND ?', '10:00:00 AM', '02:00:00 PM')
于 2014-04-04T20:51:13.363 に答える