どちらもdatetime型の属性start_atとend_atを持つモデル「Competition」があります。与えられた量よりも短い期間、たとえば3日間の競技のみを取得したいと思います。私はこれを簡単に行うことを期待します:
Competition.where('end_at - start_at < ?', X)
問題:Xには何を使用しますか?
私のデータベースには、期間が1日よりわずかに短い1つの競合オブジェクト(start_at = 2011-04-27 00:00:00、end_at = 2011-04-27 23:59:59)と3よりわずかに短いオブジェクトがあります。日(start_at = 2013-02-05 00:00:00、end_at 2013-02-07 23:59:59)、他のすべてははるかに長くなります。
2つのうち短い方を取得するには、X = 60 * 60 * 24(24時間の秒数)を使用することを想定しました。動作しません。だから私は増加係数を掛けようとしましたが、Xに2.7を掛けてもそれは得られませんが、2.8では得られることがわかりました!さて、この奇妙な係数2.8を使用する必要があります...しかし、これは3日より短いオブジェクトを取得する場合には機能しません。ここで8.7を掛ける必要があります。ここで何が起こっているのか誰か知っていますか?