按日期排序时出现语法错误

时间:2013-08-05 16:44:27

标签: ruby-on-rails postgresql

我正在使用postgresql作为Rails应用程序上的数据库,该应用程序可以跟踪某些事件发生的时间。事件发生时的数据库列称为when(我知道名字不好)。我可以这样做

@events = @group.events.order('created_at DESC')

但是,当我这样做时

 @events = @group.events.order('when DESC')

我收到此错误

PG::SyntaxError: ERROR:  syntax error at or near "when"
LINE 1: ..."events"  WHERE "events"."group_id" = $1  ORDER BY when DESC
                                                              ^
: SELECT "events".* FROM "events"  WHERE "events"."group_id" = $1  ORDER BY when DESC

when记录在数据库中具有此格式

when: "2013-08-07"

根据我告诉你的内容,你能看出我不能这样做的原因

@events = @group.events.order('when DESC')

能够在举办活动时订购活动对我来说非常重要。由于created_at的排序有效,我不明白为什么当我替换不同的列时会出现语法错误。

1 个答案:

答案 0 :(得分:3)

  • WHEN是SQL中的保留字(考虑Switch案例:CASE <smth> WHEN ...

  • 您可以尝试这样访问:

    Event.order('events.when DESC')
    
  • 您应该将列的名称更改为与when不同的内容(请查看@PhilipHallstrom评论)