to_char
タイムスタンプを適切な文字列形式に変換し、同時に小数秒を削除するために使用できます。
where to_char(my_time, 'HH24:MM:SS') = '12:00:00'
...
その ActiveRecord バージョンは非常に単純です。
MyTable.where("to_char(my_time, 'HH24:MM:SS') = '12:00:00'")
次に、既存の BETWEEN チェックをチェーンします。
extract
各時間コンポーネントを個別にチェックするために使用することもできます。
where extract(hour from my_time) = 12
and extract(minute from my_time) = 0
and extract(second from my_time) = 0
...
その ActiveRecord バージョンは次のようになります。
MyTable.where('extract(hour from my_time) = ?', 12)
.where('extract(minute from my_time) = ?', 0)
.where('extract(second from my_time) = ?', 0)
どのバージョンが最適かを確認するには、EXPLAIN に問い合わせる必要があります。