我正在使用Rails 5和PostgreSQL 9.5。我有一个包含以下列的表。
cindex=# \d crypto_index_values;
Table "public.crypto_index_values"
Column | Type | Modifiers
------------+-----------------------------+------------------------------------------------------------------
id | integer | not null default nextval('crypto_index_values_id_seq'::regclass)
value | double precision |
index_date | timestamp without time zone | not null
created_at | timestamp without time zone | not null
updated_at | timestamp without time zone | not null
给定一个存储在变量“my_date”中的时间点(比如说“2017-07-29 11:10”),我将如何编写一个Rails finder查询,该查询返回一个返回最小行的Rails条目“index_date”距离“my_date”至少24小时?所以,如果我有这个表数据
14 | 133.951211424387 | 2017-07-31 19:10:03.235566 | 2017-07-29 19:10:03.267727 | 2017-07-31 19:10:03.267727
15 | 133.951211424387 | 2017-07-31 19:20:03.59569 | 2017-07-28 19:20:03.629418 | 2017-07-31 19:20:03.629418
16 | 139.104155235946 | 2017-07-31 19:30:08.037045 | 2017-07-31 19:30:08.04715 | 2017-07-31 19:30:08.04715
并且给出了我的示例,我希望查询返回id为“15”的行,因为id为“14”的行不是距离我的示例24小时。通常这种查询可以正常工作
CryptoIndexValue.where('index_date = ?', my_date - 1)
但由于24小时之后没有一个条目,所以没有。
答案 0 :(得分:0)
您应该使用func b() int {
i := 0
for ; i < 4; i++ {
}
ret := i
fmt.Println(i); i++
fmt.Println(i); i++
fmt.Println(i); i++
fmt.Println(i); i++
return ret
}
运算符与>
结合使用。
order
答案 1 :(得分:0)
我不认为你的示例值非常有效 - 至少我不知道如何从具有该索引日期的表中选择该值,减去一天。你的意思是“具有最早日期的行,将来my_date至少也是1天”?
CryptoIndexValue.
where('index_date > ?', my_date + 1.days).
order(:my_date, :id).
take
我在订单中添加了:id
,以防您需要在具有相同index_date
的两行上设置平局,但如果由于约束而无法将其删除。
可能你的意思是减去一天而不是添加。