通过Arel或Active Record选择我的查询号附近的浮点值

时间:2014-06-13 04:05:14

标签: sql ruby-on-rails activerecord ruby-on-rails-4 arel

假设我有一个存储float

的utc_time列

我想选择utc_time值近似为1402630856

我可以接受值x,其中abs(x-1402630856)< 3

所以我应该得到前5条记录,

Arel或Active Record应该怎么办?感谢

+----+------------------+
| id | utc_time         |
+----+------------------+
|    | 1402630854.99146 |
|    | 1402630856.11391 |
|    | 1402630856.13342 |
|    | 1402630856.13576 |
|    | 1402630857.02345 |
|    | 1402630876.03702 |
|    | 1402630954.7856  |
|    | 1402630954.78688 |
|    | 1402630954.78814 |
|    | 1402630966.06754 |
+----+------------------+

1 个答案:

答案 0 :(得分:2)

这应该在ActiveRecord中起作用:

x = 1402630856
Model.where('utc_time - ? between 3 and -3', x)

您也可以使用:

Model.where(utc_time: (x - 3)..(x + 3)