我正在尝试执行下面的查询,但出现错误。
Event.where("id IN ? and event_start_date > ?",[1, 2],Time.now)
我收到如下错误:
SELECT "events".* FROM "events" WHERE (id IN 1,2 and event_start_date > '2015-03-11 04:40:43.819487')
PG::SyntaxError: ERROR: syntax error at or near "1"
LINE 1: SELECT "events".* FROM "events" WHERE (id IN 1,2 and event_s...
参数值不被视为数组。
您有语法错误。我认为您可以使您的代码更易于阅读,这将有助于防止此类错误:
Event.where({ id: [1, 2], event_start_date: Time.now })
在此格式中,您将哈希传递给 where 查询,其中 id
和 event_start_date
作为哈希键,[1, 2]
(数组)和Time.now
作为值。
这更具可读性且更易于调试。
对于数组参数和范围运算的组合,我会这样做,因为我发现它更具可读性:
Event.where(id: [1, 2]).where("event_start_date > ?", Time.now)
@sank : 你的错误给了你的答案
您的查询中存在语法错误...
取而代之的是这个
Event.where("id IN ? and event_start_date > ?",[1, 2],Time.now)
试试这个:
Event.where("id IN (?) and event_start_date > (?)",[1, 2],Time.now)
把 () 放在 ?.
Event.where("id IN(?) AND event_start_date < (?)", [1,2,3], Time.now)
您缺少 ? 标记符号周围的()
。