0

我有以下 named_scope,它在 MySQL 和 sqlite 中运行良好,但在 Postgres 中运行良好:

course.rb

named_scope :current, :conditions => ['start < ? AND end > ? ', Time.now, Time.now], :order => 'start ASC'

然后我打电话:

Course.current

我得到错误:

PGError:错误:在“结束”第 1 行或附近出现语法错误:... WHERE (start < '2010-03-17 14:03:24.995746' AND end > '201... ^ : SELECT count(*) AS count_all 来自“课程”WHERE(开始 < '2010-03-17 14:03:24.995746' AND end > '2010-03-17 14:03:24.995748' )

我的 google-fu 让我失望了,所以我希望 Stack Overflow 不会。关于如何使该范围对 Postgres 友好的任何想法?谢谢,

德鲁

4

1 回答 1

1

END是一个关键字,您必须使用另一个名称或将其放在双引号“end”之间。

如果您在列名周围使用双引号并将此代码也用于 MySQL,请通过设置正确的 SQL MODE 告诉 MySQL 接受双引号作为对象标识符:ANSI_QUOTES

于 2010-03-17T21:11:41.027 回答