postgres按升序排序,最后为0

时间:2014-08-01 15:52:40

标签: ruby-on-rails postgresql sql-order-by

所以我试图在0到6周(星期日 - 星期六)的那一天排序,但我希望星期一先行。因此,在我的数据库中,我存储星期日的第一天是0,但是我可以对星期一进行排序吗?

所以这将是1,2,3,4,5,6,0。这可能或者我应该以不同方式存储我的数据吗?只存储它,因为这是Date :: DAYNAMES索引一周的日期。

现在我有类似的东西:

TimeModel.order(:day_of_week)

如果我想要星期天,那么这很好。

2 个答案:

答案 0 :(得分:1)

您可以在PostgreSQL中执行此操作以订购表的特定值:

TimeModel.order('CASE WHEN day_of_week = 0 THEN 7 ELSE day_of_week END')

这是PostgreSQL语法中的一个简单的switch case语句。

答案 1 :(得分:1)

我不知道如何在Ruby中执行此操作,但SQL查询很简单:只需排序

(day_of_week + 6) % 7

其中%是模数运算。