我有一个具有 start_at 和 end_at 属性的模型“竞争”,两者都是 datetime 类型。我只想检索持续时间短于给定数量的比赛,例如 3 天。我希望很容易做到这一点:
Competition.where('end_at - start_at < ?', X)
问题:我对 X 使用什么?
在我的数据库中,我有一个持续时间略小于 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),所有其他的都更长。
为了检索两者中较短的一个,我预计使用 X = 60*60*24(24 小时内的秒数)。不工作。所以我尝试乘以一个增加的因子,发现将 X 乘以 2.7 不会检索到它,但 2.8 会!所以好吧,我需要使用这个奇怪的因子 2.8...但这不适用于检索短于 3 天的对象。这里我需要乘以 8.7。有人知道这里发生了什么吗?